{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 写于2023年8月26日\n",
    "### K最近邻算法解决分类问题\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-08-26T04:52:40.354183600Z",
     "start_time": "2023-08-26T04:52:40.322190900Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "数据集大小 (178, 13)\n",
      "数据分类 ['class_0' 'class_1' 'class_2']\n",
      "查看前五条数据 [[1.423e+01 1.710e+00 2.430e+00 1.560e+01 1.270e+02 2.800e+00 3.060e+00\n",
      "  2.800e-01 2.290e+00 5.640e+00 1.040e+00 3.920e+00 1.065e+03]\n",
      " [1.320e+01 1.780e+00 2.140e+00 1.120e+01 1.000e+02 2.650e+00 2.760e+00\n",
      "  2.600e-01 1.280e+00 4.380e+00 1.050e+00 3.400e+00 1.050e+03]\n",
      " [1.316e+01 2.360e+00 2.670e+00 1.860e+01 1.010e+02 2.800e+00 3.240e+00\n",
      "  3.000e-01 2.810e+00 5.680e+00 1.030e+00 3.170e+00 1.185e+03]\n",
      " [1.437e+01 1.950e+00 2.500e+00 1.680e+01 1.130e+02 3.850e+00 3.490e+00\n",
      "  2.400e-01 2.180e+00 7.800e+00 8.600e-01 3.450e+00 1.480e+03]\n",
      " [1.324e+01 2.590e+00 2.870e+00 2.100e+01 1.180e+02 2.800e+00 2.690e+00\n",
      "  3.900e-01 1.820e+00 4.320e+00 1.040e+00 2.930e+00 7.350e+02]]\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "from sklearn.datasets import load_wine\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "\n",
    "wine = load_wine()\n",
    "print(\"数据集大小\",wine.data.shape)\n",
    "print(\"数据分类\",wine.target_names)\n",
    "print(\"查看前五条数据\",wine.data[:5])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-08-26T04:56:00.582359700Z",
     "start_time": "2023-08-26T04:56:00.288353800Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "测试集精度 0.73\n"
     ]
    }
   ],
   "source": [
    "# 划分训练集和数据集\n",
    "X_train,X_test,y_train,y_test = train_test_split(wine.data,wine.target,random_state=0)\n",
    "# 构建Knn分类器\n",
    "knn_classifier = KNeighborsClassifier(n_neighbors=5)\n",
    "knn_classifier.fit(X_train,y_train)\n",
    "print(\"测试集精度\",round(knn_classifier.score(X_test,y_test),2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-08-26T05:03:56.719872200Z",
     "start_time": "2023-08-26T05:03:56.638876900Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "最好的验证精度 0.68\n",
      "最好的参数组合 {'n_neighbors': 7}\n",
      "测试集精度 0.78\n"
     ]
    }
   ],
   "source": [
    "# 网格搜索\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "grid_parameter = {'n_neighbors':[3,4,5,6,7,8]}\n",
    "grid = GridSearchCV(knn_classifier,grid_parameter,cv=5,n_jobs=-1)\n",
    "grid.fit(X_train,y_train)\n",
    "print(\"最好的验证精度\",round(grid.best_score_,2))\n",
    "print(\"最好的参数组合\",grid.best_params_)\n",
    "print(\"测试集精度\",round(grid.score(X_test,y_test),2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 使用逻辑回归分类"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-08-26T05:06:26.133497700Z",
     "start_time": "2023-08-26T05:06:24.969895500Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "测试集精度 0.93\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "E:\\myAnaconda\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:762: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n"
     ]
    }
   ],
   "source": [
    "from sklearn.linear_model import LogisticRegression\n",
    "logr_classification = LogisticRegression()\n",
    "logr_classification.fit(X_train,y_train)\n",
    "print(\"测试集精度\",round(logr_classification.score(X_test,y_test),2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-08-26T05:12:16.664096800Z",
     "start_time": "2023-08-26T05:12:16.632809100Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "测试集精度 1.0\n"
     ]
    }
   ],
   "source": [
    "# 数组做标准化\n",
    "from sklearn.preprocessing import MinMaxScaler\n",
    "scaler = MinMaxScaler()\n",
    "scaler.fit(X_train)\n",
    "X_train_scaled = scaler.transform(X_train)\n",
    "X_test_scaled = scaler.transform(X_test)\n",
    "logr_classification.fit(X_train_scaled,y_train)\n",
    "print(\"测试集精度\",round(logr_classification.score(X_test_scaled,y_test),2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-08-26T05:21:42.024578500Z",
     "start_time": "2023-08-26T05:21:39.622605600Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "最好的验证精度 0.96\n",
      "最好的参数组合 {'n_neighbors': 5}\n",
      "测试集精度 0.98\n"
     ]
    }
   ],
   "source": [
    "# 尝试用缩放后的数据\n",
    "grid.fit(X_train_scaled,y_train)\n",
    "print(\"最好的验证精度\",round(grid.best_score_,2))\n",
    "print(\"最好的参数组合\",grid.best_params_)\n",
    "print(\"测试集精度\",round(grid.score(X_test_scaled,y_test),2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 写于2023年8月27日\n",
    "## 使用逻辑回归实现乳腺癌病情诊断"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-08-27T04:20:14.364759100Z",
     "start_time": "2023-08-27T04:20:07.467192600Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "数据形状 (569, 30)\n",
      "标签 ['malignant' 'benign']\n",
      "前5条数据\n",
      "[[1.799e+01 1.038e+01 1.228e+02 1.001e+03 1.184e-01 2.776e-01 3.001e-01\n",
      "  1.471e-01 2.419e-01 7.871e-02 1.095e+00 9.053e-01 8.589e+00 1.534e+02\n",
      "  6.399e-03 4.904e-02 5.373e-02 1.587e-02 3.003e-02 6.193e-03 2.538e+01\n",
      "  1.733e+01 1.846e+02 2.019e+03 1.622e-01 6.656e-01 7.119e-01 2.654e-01\n",
      "  4.601e-01 1.189e-01]\n",
      " [2.057e+01 1.777e+01 1.329e+02 1.326e+03 8.474e-02 7.864e-02 8.690e-02\n",
      "  7.017e-02 1.812e-01 5.667e-02 5.435e-01 7.339e-01 3.398e+00 7.408e+01\n",
      "  5.225e-03 1.308e-02 1.860e-02 1.340e-02 1.389e-02 3.532e-03 2.499e+01\n",
      "  2.341e+01 1.588e+02 1.956e+03 1.238e-01 1.866e-01 2.416e-01 1.860e-01\n",
      "  2.750e-01 8.902e-02]\n",
      " [1.969e+01 2.125e+01 1.300e+02 1.203e+03 1.096e-01 1.599e-01 1.974e-01\n",
      "  1.279e-01 2.069e-01 5.999e-02 7.456e-01 7.869e-01 4.585e+00 9.403e+01\n",
      "  6.150e-03 4.006e-02 3.832e-02 2.058e-02 2.250e-02 4.571e-03 2.357e+01\n",
      "  2.553e+01 1.525e+02 1.709e+03 1.444e-01 4.245e-01 4.504e-01 2.430e-01\n",
      "  3.613e-01 8.758e-02]\n",
      " [1.142e+01 2.038e+01 7.758e+01 3.861e+02 1.425e-01 2.839e-01 2.414e-01\n",
      "  1.052e-01 2.597e-01 9.744e-02 4.956e-01 1.156e+00 3.445e+00 2.723e+01\n",
      "  9.110e-03 7.458e-02 5.661e-02 1.867e-02 5.963e-02 9.208e-03 1.491e+01\n",
      "  2.650e+01 9.887e+01 5.677e+02 2.098e-01 8.663e-01 6.869e-01 2.575e-01\n",
      "  6.638e-01 1.730e-01]\n",
      " [2.029e+01 1.434e+01 1.351e+02 1.297e+03 1.003e-01 1.328e-01 1.980e-01\n",
      "  1.043e-01 1.809e-01 5.883e-02 7.572e-01 7.813e-01 5.438e+00 9.444e+01\n",
      "  1.149e-02 2.461e-02 5.688e-02 1.885e-02 1.756e-02 5.115e-03 2.254e+01\n",
      "  1.667e+01 1.522e+02 1.575e+03 1.374e-01 2.050e-01 4.000e-01 1.625e-01\n",
      "  2.364e-01 7.678e-02]]\n"
     ]
    }
   ],
   "source": [
    "from sklearn.datasets import load_breast_cancer\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "# 导入数据\n",
    "cancer = load_breast_cancer()\n",
    "print(\"数据形状\", cancer.data.shape)\n",
    "print(\"标签\",cancer.target_names)\n",
    "print(\"前5条数据\")\n",
    "print(cancer.data[:5])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-08-27T04:27:58.615960500Z",
     "start_time": "2023-08-27T04:27:58.579908800Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "测试集精度 0.96\n"
     ]
    }
   ],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.preprocessing import MinMaxScaler\n",
    "X_train,X_test,y_train,y_test = train_test_split(cancer.data,cancer.target,random_state=0)\n",
    "# 数据缩放器\n",
    "scaler = MinMaxScaler()\n",
    "scaler.fit(X_train)\n",
    "X_train_scaled = scaler.transform(X_train)\n",
    "X_test_scaled = scaler.transform(X_test)\n",
    "# 构造逻辑回归分类器\n",
    "logr_classification = LogisticRegression()\n",
    "logr_classification.fit(X_train_scaled,y_train)\n",
    "print(\"测试集精度\",round(logr_classification.score(X_test_scaled,y_test),2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-08-27T04:39:58.547940Z",
     "start_time": "2023-08-27T04:39:58.533903800Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "          恶性       1.00      0.89      0.94        53\n",
      "          良性       0.94      1.00      0.97        90\n",
      "\n",
      "    accuracy                           0.96       143\n",
      "   macro avg       0.97      0.94      0.95       143\n",
      "weighted avg       0.96      0.96      0.96       143\n",
      "\n"
     ]
    }
   ],
   "source": [
    "## 尝试使用其他模型评估指标\n",
    "from sklearn.metrics import classification_report\n",
    "y_pred = logr_classification.predict(X_test_scaled)\n",
    "print(classification_report(y_test,y_pred,target_names=['恶性','良性']))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-08-27T04:41:14.862127100Z",
     "start_time": "2023-08-27T04:41:14.787105Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[47  6]\n",
      " [ 0 90]]\n"
     ]
    }
   ],
   "source": [
    "from sklearn.metrics import confusion_matrix\n",
    "print(confusion_matrix(y_test,y_pred))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 尝试使用神经网络诊断乳腺癌"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-08-27T11:48:50.955093500Z",
     "start_time": "2023-08-27T11:48:49.870099200Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "测试集精度 0.97\n"
     ]
    }
   ],
   "source": [
    "from sklearn.neural_network import MLPClassifier\n",
    "mlp_classification = MLPClassifier(hidden_layer_sizes=[10,10],max_iter=1200)\n",
    "mlp_classification.fit(X_train_scaled,y_train)\n",
    "print(\"测试集精度\",round(mlp_classification.score(X_test_scaled,y_test),2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 尝试使用支持向量机诊断乳腺癌"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-08-27T12:06:20.800137700Z",
     "start_time": "2023-08-27T12:06:20.449139900Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "最佳验证集精度 0.98\n",
      "最佳参数组合 {'C': 1, 'gamma': 1}\n",
      "测试集精度 0.97\n"
     ]
    }
   ],
   "source": [
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.svm import SVC\n",
    "param_grid = {\"gamma\":[0.01,0.1,1,10,100],'C':[0.01,0.1,1,10,100]}\n",
    "grid = GridSearchCV(SVC(),param_grid=param_grid,cv=5,n_jobs=-1)\n",
    "grid.fit(X_train_scaled,y_train)\n",
    "print(\"最佳验证集精度\",round(grid.best_score_,2))\n",
    "print(\"最佳参数组合\",grid.best_params_)\n",
    "print('测试集精度',round(grid.score(X_test_scaled,y_test),2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2023年8月28日\n",
    "### 构造朴素贝叶斯分类器"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-08-28T00:35:07.663754300Z",
     "start_time": "2023-08-28T00:35:07.531767700Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[ 8.73  0.31]\n",
      " [ 4.71 -0.42]\n",
      " [ 4.58  6.18]\n",
      " [ 9.38  2.18]\n",
      " [ 4.78  5.28]]\n",
      "[2. 3. 1. 2. 1.]\n",
      "测试集精度 0.99\n"
     ]
    }
   ],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.naive_bayes import GaussianNB\n",
    "import numpy as np\n",
    "\n",
    "# 加载数据集\n",
    "filename = \"F:\\python学习资料\\Python-Machine-Learning-Cookbook-master\\Chapter02\\data_multivar.txt\"\n",
    "X,y = [],[]\n",
    "with open(filename,'r') as f:\n",
    "    for line in f.readlines():\n",
    "        data = [float(x) for x in line.split(',')]\n",
    "        X.append(data[:-1])\n",
    "        y.append(data[-1])\n",
    "\n",
    "X = np.array(X)\n",
    "y = np.array(y)\n",
    "\n",
    "print(X[:5])\n",
    "print(y[:5])\n",
    "\n",
    "X_train,X_test,y_train,y_test = train_test_split(X,y,random_state=0)\n",
    "nb_classifier = GaussianNB()\n",
    "nb_classifier.fit(X_train,y_train)\n",
    "print(\"测试集精度\",round(nb_classifier.score(X_test,y_test),2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-08-28T00:45:07.848347100Z",
     "start_time": "2023-08-28T00:45:07.826316900Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "测试集精度 0.933\n"
     ]
    }
   ],
   "source": [
    "from sklearn.datasets import load_wine\n",
    "wine = load_wine()\n",
    "X_train,X_test,y_train,y_test = train_test_split(wine.data,wine.target,random_state=0)\n",
    "nb_classifier.fit(X_train,y_train)\n",
    "print(\"测试集精度\",round(nb_classifier.score(X_test,y_test),3))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-08-28T00:44:59.798014700Z",
     "start_time": "2023-08-28T00:44:59.786017300Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "测试集精度 0.933\n"
     ]
    }
   ],
   "source": [
    "# 使用管道给贝叶斯做预处理\n",
    "from sklearn.pipeline import Pipeline\n",
    "from sklearn.preprocessing import MinMaxScaler\n",
    "pipe = Pipeline([('scaler',MinMaxScaler()),('nb_classifier',GaussianNB())])\n",
    "pipe.fit(X_train,y_train)\n",
    "print(\"测试集精度\",round(pipe.score(X_test,y_test),3))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-08-28T00:48:11.324206200Z",
     "start_time": "2023-08-28T00:48:09.504361300Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "测试集精度 1.0\n"
     ]
    }
   ],
   "source": [
    "from sklearn.linear_model import LogisticRegression\n",
    "# 逻辑回归对比\n",
    "pipe_logist = Pipeline([('scaler',MinMaxScaler()),('log_classifier',LogisticRegression())])\n",
    "pipe_logist.fit(X_train,y_train)\n",
    "print(\"测试集精度\",round(pipe_logist.score(X_test,y_test),3))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 梯度提升树"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-08-28T12:54:57.267568200Z",
     "start_time": "2023-08-28T12:54:56.015568400Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "测试集精度 0.867\n",
      "测试集精度 0.867\n"
     ]
    }
   ],
   "source": [
    "from sklearn.ensemble import AdaBoostClassifier\n",
    "from sklearn.datasets import load_wine\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.pipeline import Pipeline\n",
    "from sklearn.preprocessing import MinMaxScaler\n",
    "wine = load_wine()\n",
    "X_train,X_test,y_train,y_test = train_test_split(wine.data,wine.target,random_state=0)\n",
    "boost_classifier = AdaBoostClassifier(n_estimators=100)\n",
    "boost_classifier.fit(X_train,y_train)\n",
    "pipe = Pipeline([(\"scaler\",MinMaxScaler()),(\"classifier\",AdaBoostClassifier(n_estimators=500))])\n",
    "print(\"测试集精度\",round(boost_classifier.score(X_test,y_test),3))\n",
    "pipe.fit(X_train,y_train)\n",
    "print(\"测试集精度\",round(pipe.score(X_test,y_test),3))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-08-28T12:26:57.946207300Z",
     "start_time": "2023-08-28T12:26:57.922995100Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "测试集精度 1.0\n"
     ]
    }
   ],
   "source": [
    "from sklearn.svm import SVC\n",
    "svc_pipeline = Pipeline([(\"scaler\",MinMaxScaler()),(\"SVC\",SVC())])\n",
    "svc_pipeline.fit(X_train,y_train)\n",
    "print(\"测试集精度\",round(svc_pipeline.score(X_test,y_test),3))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-08-28T13:03:24.314408900Z",
     "start_time": "2023-08-28T13:03:24.262404100Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "测试集 0.98\n",
      "测试集 0.98\n"
     ]
    }
   ],
   "source": [
    "from sklearn.ensemble import BaggingClassifier\n",
    "bag_classifier = BaggingClassifier(random_state=0)\n",
    "bag_classifier.fit(X_train,y_train)\n",
    "print(\"测试集\",round(bag_classifier.score(X_test,y_test),2))\n",
    "# 管道\n",
    "bag_pipe = Pipeline([('scaler',MinMaxScaler()),('classifier',BaggingClassifier(random_state=0))])\n",
    "bag_pipe.fit(X_train,y_train)\n",
    "print(\"测试集\",round(bag_pipe.score(X_test,y_test),2))"
   ]
  },
  {
   "cell_type": "markdown",
   "source": [
    "## 2023年8月29日\n",
    "### 随机森林解决乳腺癌分类"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "测试集精度 0.97\n"
     ]
    }
   ],
   "source": [
    "from sklearn.datasets import load_breast_cancer\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from sklearn.model_selection import train_test_split\n",
    "cancer = load_breast_cancer()\n",
    "X_train,X_test,y_train,y_test = train_test_split(cancer.data,cancer.target,random_state=0)\n",
    "rd_classifier=RandomForestClassifier()\n",
    "rd_classifier.fit(X_train,y_train)\n",
    "print(\"测试集精度\",round(rd_classifier.score(X_test,y_test),2))"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-08-29T07:27:02.065426300Z",
     "start_time": "2023-08-29T07:26:47.057625700Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "测试集 0.979\n"
     ]
    }
   ],
   "source": [
    "## adaBoost算法\n",
    "from sklearn.ensemble import AdaBoostClassifier\n",
    "from sklearn.tree import DecisionTreeClassifier\n",
    "adaBoost_classifier = AdaBoostClassifier(DecisionTreeClassifier(max_depth=5),n_estimators=300)\n",
    "adaBoost_classifier.fit(X_train,y_train)\n",
    "print(\"测试集\",round(adaBoost_classifier.score(X_test,y_test),3))"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-08-29T09:33:58.469233200Z",
     "start_time": "2023-08-29T09:33:57.193231700Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "每个分类器的权重\n",
      "[1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.\n",
      " 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.\n",
      " 1. 1.]\n"
     ]
    }
   ],
   "source": [
    "print(\"每个分类器的权重\")\n",
    "print(adaBoost_classifier.estimator_weights_)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-08-29T09:22:36.276970100Z",
     "start_time": "2023-08-29T09:22:36.231958700Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "每个分类器错分类率 [0.07746479 0.15136643 0.17558421 0.22393501 0.22472753 0.26730351\n",
      " 0.27433897 0.28003641 0.259445   0.29865128 0.28094882 0.32640749\n",
      " 0.36087655 0.2502509  0.29895887 0.28835357 0.27335401 0.31673681\n",
      " 0.34271977 0.34329511 0.37757401 0.30764484 0.2755109  0.26295954\n",
      " 0.36952572 0.3304634  0.31740953 0.2934888  0.27363658 0.32528894\n",
      " 0.30869944 0.32640674 0.31544068 0.33087263 0.32653347 0.35959021\n",
      " 0.37024608 0.37166164 0.27613506 0.29947205 0.34943189 0.26880318\n",
      " 0.33852938 0.3530314  0.29554403 0.31694603 0.30618874 0.32052493\n",
      " 0.3436024  0.28000245]\n"
     ]
    }
   ],
   "source": [
    "print(\"每个分类器错分类率\",adaBoost_classifier.estimator_errors_)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-08-29T09:23:09.773727700Z",
     "start_time": "2023-08-29T09:23:09.764726700Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "测试集精度 0.95\n"
     ]
    }
   ],
   "source": [
    "# 使用逻辑回归作为弱学习器\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "adaboost_log = AdaBoostClassifier(LogisticRegression(max_iter=500),n_estimators=300)\n",
    "adaboost_log.fit(X_train,y_train)\n",
    "print(\"测试集精度\",round(adaboost_log.score(X_test,y_test),2))"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-08-29T09:38:06.471604Z",
     "start_time": "2023-08-29T09:38:01.277568200Z"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "## 梯度提升树"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练集精度 1.0\n",
      "测试集精度 0.97\n"
     ]
    }
   ],
   "source": [
    "from sklearn.ensemble import GradientBoostingClassifier\n",
    "# 梯度提升书常用参数\n",
    "## n_estimators:弱学习器数\n",
    "## learn_rate:学习率，值越大,模型越严格\n",
    "## max_depth:最大深度\n",
    "gbrt = GradientBoostingClassifier(random_state=0)\n",
    "gbrt.fit(X_train,y_train)\n",
    "print(\"训练集精度\",round(gbrt.score(X_train,y_train),2))\n",
    "print(\"测试集精度\",round(gbrt.score(X_test,y_test),2))"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-08-29T10:33:32.685992Z",
     "start_time": "2023-08-29T10:33:31.855951100Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练集精度 1.0\n",
      "测试集精度 0.965\n"
     ]
    }
   ],
   "source": [
    "gbrt = GradientBoostingClassifier(random_state=0,max_depth=5,learning_rate=0.5,n_estimators=500)\n",
    "gbrt.fit(X_train,y_train)\n",
    "print(\"训练集精度\",round(gbrt.score(X_train,y_train),3))\n",
    "print(\"测试集精度\",round(gbrt.score(X_test,y_test),3))"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-08-29T10:37:47.402458600Z",
     "start_time": "2023-08-29T10:37:44.231460500Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练集精度 0.993\n",
      "测试集精度 0.972\n"
     ]
    }
   ],
   "source": [
    "## bagging方法\n",
    "### bagging方法参数\n",
    "#### n_estimators:弱学习器个数(默认为10)\n",
    "#### max_samples:抽取的最大样本个数默认为1.0\n",
    "#### max_features:抽取的特征数，默认为1.0\n",
    "from sklearn.ensemble import BaggingClassifier\n",
    "bagg_classifier = BaggingClassifier(random_state=0)\n",
    "bagg_classifier.fit(X_train,y_train)\n",
    "print(\"训练集精度\",round(bagg_classifier.score(X_train,y_train),3))\n",
    "print(\"测试集精度\",round(bagg_classifier.score(X_test,y_test),3))"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-08-29T10:43:39.470148600Z",
     "start_time": "2023-08-29T10:43:39.400152700Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练集精度 1.0\n",
      "测试集精度 0.986\n"
     ]
    }
   ],
   "source": [
    "bagg_classifier = BaggingClassifier(random_state=0,n_estimators=50)\n",
    "bagg_classifier.fit(X_train,y_train)\n",
    "print(\"训练集精度\",round(bagg_classifier.score(X_train,y_train),3))\n",
    "print(\"测试集精度\",round(bagg_classifier.score(X_test,y_test),3))"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-08-29T10:46:26.517320800Z",
     "start_time": "2023-08-29T10:46:26.219345Z"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "## 随机森林"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练集精度 1.0\n",
      "测试集精度 0.972\n"
     ]
    }
   ],
   "source": [
    "from sklearn.ensemble import RandomForestClassifier\n",
    "rf = RandomForestClassifier(random_state=0)\n",
    "rf.fit(X_train,y_train)\n",
    "print(\"训练集精度\",round(rf.score(X_train,y_train),3))\n",
    "print(\"测试集精度\",round(rf.score(X_test,y_test),3))"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-08-29T12:23:00.400886600Z",
     "start_time": "2023-08-29T12:23:00.085886200Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "   malignant       0.95      0.98      0.96        53\n",
      "      benign       0.99      0.97      0.98        90\n",
      "\n",
      "    accuracy                           0.97       143\n",
      "   macro avg       0.97      0.97      0.97       143\n",
      "weighted avg       0.97      0.97      0.97       143\n",
      "\n",
      "[0.94186047 0.96470588 0.91764706 0.95294118 0.97647059]\n"
     ]
    }
   ],
   "source": [
    "from sklearn.metrics import classification_report\n",
    "from sklearn.model_selection import cross_val_score\n",
    "print(classification_report(y_test,rf.predict(X_test),target_names=cancer.target_names))\n",
    "print(cross_val_score(rf,X_train,y_train,scoring='recall_weighted'))"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-08-29T12:22:08.771573800Z",
     "start_time": "2023-08-29T12:22:07.170560Z"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "## 2023年8月30日\n",
    "### 聚类算法\n",
    "#### 原型聚类\n",
    "##### K-means算法"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[ 1.65  1.91]\n",
      " [ 2.77  4.98]\n",
      " [ 5.82  2.56]\n",
      " [ 7.24  5.24]\n",
      " [-0.3   4.06]]\n"
     ]
    }
   ],
   "source": [
    "from sklearn.cluster import KMeans\n",
    "filename = \"F:\\python学习资料\\Python-Machine-Learning-Cookbook-master\\Chapter04\\data_perf.txt\"\n",
    "X =[]\n",
    "with open(filename,'r') as f:\n",
    "    for line in f.readlines():\n",
    "        data = [float(i) for i in line.split(\",\")]\n",
    "        X.append(data)\n",
    "\n",
    "import numpy as np\n",
    "data = np.array(X)\n",
    "print(data[:5])"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-08-30T05:40:49.556474Z",
     "start_time": "2023-08-30T05:40:49.533475600Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[3 1 0 2 1 1 4 4 3 4 2 0 1 4 2 4 3 0 3 2 1 4 3 4 2 0 1 1 0 3 3 2 4 0 3 1 0\n",
      " 4 2 0 4 2 3 0 1 2 4 2 0 4 2 0 1 2 4 3 3 4 3 2 0 2 1 3 4 2 2 4 3 2 4 2 4 2\n",
      " 4 2 0 3 3 4 1 3 4 1 0 2 4 2 4 1 3 3 1 2 1 1 1 0 2 0 4 1 3 4 2 0 2 2 1 3 2\n",
      " 3 3 2 3 4 3 1 4 3 3 2 0 3 0 2 4 0 4 1 4 2 2 0 4 1 4 2 1 3 0 0 3 2 2 4 0 4\n",
      " 3 0 0 1 3 3 4 2 4 0 3 3 0 4 3 4 0 1 3 4 1 4 3 2 2 2 0 4 1 2 2 3 4 2 1 1 1\n",
      " 3 2 4 2 2 2 3 3 4 0 2 1 0 3 1]\n",
      "[3 1 0 2 1 1 4 4 3 4 2 0 1 4 2 4 3 0 3 2 1 4 3 4 2 0 1 1 0 3 3 2 4 0 3 1 0\n",
      " 4 2 0 4 2 3 0 1 2 4 2 0 4 2 0 1 2 4 3 3 4 3 2 0 2 1 3 4 2 2 4 3 2 4 2 4 2\n",
      " 4 2 0 3 3 4 1 3 4 1 0 2 4 2 4 1 3 3 1 2 1 1 1 0 2 0 4 1 3 4 2 0 2 2 1 3 2\n",
      " 3 3 2 3 4 3 1 4 3 3 2 0 3 0 2 4 0 4 1 4 2 2 0 4 1 4 2 1 3 0 0 3 2 2 4 0 4\n",
      " 3 0 0 1 3 3 4 2 4 0 3 3 0 4 3 4 0 1 3 4 1 4 3 2 2 2 0 4 1 2 2 3 4 2 1 1 1\n",
      " 3 2 4 2 2 2 3 3 4 0 2 1 0 3 1]\n"
     ]
    }
   ],
   "source": [
    "kmeans = KMeans(n_clusters=5)\n",
    "kmeans.fit(X)\n",
    "print(kmeans.labels_)\n",
    "print(kmeans.predict(X))"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-08-30T12:06:56.943745900Z",
     "start_time": "2023-08-30T12:06:52.763218Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 432x288 with 1 Axes>",
      "image/png": "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\n"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "plt.scatter(data[:,0],data[:,1])\n",
    "# plt.show()"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-08-30T05:47:27.998672300Z",
     "start_time": "2023-08-30T05:47:25.856927Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[ 1.65  1.91  3.  ]\n",
      " [ 2.77  4.98  4.  ]\n",
      " [ 5.82  2.56  1.  ]\n",
      " [ 7.24  5.24  2.  ]\n",
      " [-0.3   4.06  0.  ]\n",
      " [ 1.13  2.    3.  ]\n",
      " [ 2.83  5.31  4.  ]\n",
      " [ 5.62  2.19  1.  ]\n",
      " [ 6.76  5.87  2.  ]\n",
      " [ 0.61  3.95  0.  ]\n",
      " [ 2.55  1.8   3.  ]\n",
      " [ 3.21  4.9   4.  ]\n",
      " [ 6.07  3.1   1.  ]\n",
      " [ 7.18  5.48  2.  ]\n",
      " [-0.04  3.84  0.  ]\n",
      " [ 2.53  1.33  3.  ]\n",
      " [ 3.93  5.03  4.  ]\n",
      " [ 5.22  2.66  1.  ]\n",
      " [ 7.88  5.37  2.  ]\n",
      " [-0.79  3.77  0.  ]\n",
      " [ 2.03  1.87  3.  ]\n",
      " [ 3.82  6.21  4.  ]\n",
      " [ 6.97  0.65  1.  ]\n",
      " [ 6.78  4.9   2.  ]\n",
      " [ 0.5   3.3   0.  ]\n",
      " [ 2.04  3.62  3.  ]\n",
      " [ 3.8   4.66  4.  ]\n",
      " [ 5.55  3.17  1.  ]\n",
      " [ 7.66  5.05  2.  ]\n",
      " [-0.14  4.09  0.  ]\n",
      " [ 0.86  2.38  3.  ]\n",
      " [ 3.03  5.18  4.  ]\n",
      " [ 6.1   2.26  1.  ]\n",
      " [ 7.36  6.59  2.  ]\n",
      " [-0.01  3.48  0.  ]\n",
      " [ 2.29  1.95  3.  ]\n",
      " [ 2.7   4.85  4.  ]\n",
      " [ 5.98  1.64  1.  ]\n",
      " [ 6.15  5.38  2.  ]\n",
      " [-0.4   3.68  0.  ]\n",
      " [ 1.1   2.03  3.  ]\n",
      " [ 3.27  4.1   4.  ]\n",
      " [ 6.04  1.24  1.  ]\n",
      " [ 7.73  5.35  2.  ]\n",
      " [-0.04  3.54  0.  ]\n",
      " [ 1.74  2.02  3.  ]\n",
      " [ 3.13  5.21  4.  ]\n",
      " [ 5.2   2.32  1.  ]\n",
      " [ 7.58  4.13  2.  ]\n",
      " [-0.03  3.82  0.  ]\n",
      " [ 3.69  1.57  3.  ]\n",
      " [ 3.46  6.57  4.  ]\n",
      " [ 5.93  1.37  1.  ]\n",
      " [ 7.39  5.6   2.  ]\n",
      " [ 0.58  3.68  0.  ]\n",
      " [ 2.66  2.32  3.  ]\n",
      " [ 2.44  4.84  4.  ]\n",
      " [ 6.25  2.59  1.  ]\n",
      " [ 7.62  6.08  2.  ]\n",
      " [-0.15  3.35  0.  ]\n",
      " [ 1.19  2.52  3.  ]\n",
      " [ 2.63  3.22  3.  ]\n",
      " [ 6.29  1.48  1.  ]\n",
      " [ 6.05  4.92  2.  ]\n",
      " [ 0.3   3.79  0.  ]\n",
      " [ 0.76  1.54  3.  ]\n",
      " [ 2.81  4.39  4.  ]\n",
      " [ 5.79  2.15  1.  ]\n",
      " [ 7.09  4.78  2.  ]\n",
      " [ 0.05  3.98  0.  ]\n",
      " [ 2.63  2.05  3.  ]\n",
      " [ 3.69  5.93  4.  ]\n",
      " [ 5.81  1.96  1.  ]\n",
      " [ 7.85  4.95  2.  ]\n",
      " [ 0.16  4.05  0.  ]\n",
      " [ 1.8   2.55  3.  ]\n",
      " [ 3.17  5.77  4.  ]\n",
      " [ 6.25  1.78  1.  ]\n",
      " [ 7.41  5.86  2.  ]\n",
      " [-0.57  3.68  0.  ]\n",
      " [ 3.18  2.74  3.  ]\n",
      " [ 3.38  5.19  4.  ]\n",
      " [ 6.59  0.86  1.  ]\n",
      " [ 6.1   5.98  2.  ]\n",
      " [-0.03  3.7   0.  ]\n",
      " [ 1.4   2.02  3.  ]\n",
      " [ 2.99  4.64  4.  ]\n",
      " [ 6.11  3.22  1.  ]\n",
      " [ 7.47  4.85  2.  ]\n",
      " [-0.67  4.32  0.  ]\n",
      " [ 1.45  1.92  3.  ]\n",
      " [ 3.5   5.85  4.  ]\n",
      " [ 5.66  2.04  1.  ]\n",
      " [ 6.3   5.38  2.  ]\n",
      " [-0.27  4.38  0.  ]\n",
      " [ 1.85  2.64  3.  ]\n",
      " [ 2.13  5.57  4.  ]\n",
      " [ 5.98  1.68  1.  ]\n",
      " [ 5.49  4.85  2.  ]\n",
      " [ 0.07  4.2   0.  ]\n",
      " [ 2.29  2.19  3.  ]\n",
      " [ 2.71  4.32  4.  ]\n",
      " [ 5.8   1.08  1.  ]\n",
      " [ 7.1   5.72  2.  ]\n",
      " [ 0.11  3.47  0.  ]\n",
      " [ 1.59  1.72  3.  ]\n",
      " [ 3.36  4.72  4.  ]\n",
      " [ 5.94  2.79  1.  ]\n",
      " [ 6.93  6.25  2.  ]\n",
      " [-0.5   4.07  0.  ]\n",
      " [ 2.24  2.95  3.  ]\n",
      " [ 2.51  4.96  4.  ]\n",
      " [ 5.65  2.35  1.  ]\n",
      " [ 6.74  5.03  2.  ]\n",
      " [-0.41  2.6   0.  ]\n",
      " [ 2.56  2.3   3.  ]\n",
      " [ 4.04  5.32  4.  ]\n",
      " [ 5.5   1.94  1.  ]\n",
      " [ 7.53  5.63  2.  ]\n",
      " [ 0.05  4.02  0.  ]\n",
      " [ 1.31  2.77  3.  ]\n",
      " [ 3.06  4.92  4.  ]\n",
      " [ 6.08  1.58  1.  ]\n",
      " [ 6.73  5.73  2.  ]\n",
      " [ 0.23  3.64  0.  ]\n",
      " [ 1.83  1.27  3.  ]\n",
      " [ 3.65  4.65  4.  ]\n",
      " [ 6.25  1.63  1.  ]\n",
      " [ 7.03  4.91  2.  ]\n",
      " [ 0.38  3.65  0.  ]\n",
      " [ 1.32  1.73  3.  ]\n",
      " [ 3.62  6.01  4.  ]\n",
      " [ 6.78  1.93  1.  ]\n",
      " [ 7.96  6.12  2.  ]\n",
      " [-0.61  3.86  0.  ]\n",
      " [ 2.7   1.28  3.  ]\n",
      " [ 2.41  4.81  4.  ]\n",
      " [ 6.47  1.71  1.  ]\n",
      " [ 7.16  5.48  2.  ]\n",
      " [ 0.04  3.09  0.  ]\n",
      " [ 2.71  2.58  3.  ]\n",
      " [ 1.86  5.28  4.  ]\n",
      " [ 5.3   1.55  1.  ]\n",
      " [ 6.96  5.33  2.  ]\n",
      " [ 1.49  3.89  0.  ]\n",
      " [ 1.98  2.27  3.  ]\n",
      " [ 3.27  4.54  4.  ]\n",
      " [ 6.51  1.8   1.  ]\n",
      " [ 6.02  5.68  2.  ]\n",
      " [ 0.38  4.06  0.  ]\n",
      " [ 0.48  2.02  3.  ]\n",
      " [ 2.79  5.06  4.  ]\n",
      " [ 6.27  2.48  1.  ]\n",
      " [ 6.86  5.55  2.  ]\n",
      " [ 0.45  4.29  0.  ]\n",
      " [ 1.4   3.06  3.  ]\n",
      " [ 2.89  4.63  4.  ]\n",
      " [ 6.85  1.87  1.  ]\n",
      " [ 6.77  5.87  2.  ]\n",
      " [-0.8   4.49  0.  ]\n",
      " [ 1.75  2.19  3.  ]\n",
      " [ 3.14  4.16  4.  ]\n",
      " [ 7.11  2.94  1.  ]\n",
      " [ 7.06  5.83  2.  ]\n",
      " [-0.02  5.43  0.  ]\n",
      " [ 1.86  2.36  3.  ]\n",
      " [ 4.25  5.19  4.  ]\n",
      " [ 7.56  1.42  1.  ]\n",
      " [ 7.39  5.6   2.  ]\n",
      " [ 0.18  3.76  0.  ]\n",
      " [ 2.57  1.73  3.  ]\n",
      " [ 3.43  4.85  4.  ]\n",
      " [ 5.21  1.61  1.  ]\n",
      " [ 5.99  5.34  2.  ]\n",
      " [ 0.06  4.44  0.  ]\n",
      " [ 2.04  1.43  3.  ]\n",
      " [ 3.77  5.07  4.  ]\n",
      " [ 5.88  0.88  1.  ]\n",
      " [ 7.42  6.18  2.  ]\n",
      " [ 0.48  4.46  0.  ]\n",
      " [ 1.77  0.83  3.  ]\n",
      " [ 3.73  5.09  4.  ]\n",
      " [ 6.68  1.7   1.  ]\n",
      " [ 7.62  4.71  2.  ]\n",
      " [-1.14  4.71  0.  ]\n",
      " [ 2.47  2.24  3.  ]\n",
      " [ 2.98  5.28  4.  ]\n",
      " [ 5.71  1.72  1.  ]\n",
      " [ 7.27  5.13  2.  ]\n",
      " [-0.27  4.17  0.  ]\n",
      " [ 2.24  1.9   3.  ]\n",
      " [ 2.43  4.98  4.  ]\n",
      " [ 6.3   2.11  1.  ]\n",
      " [ 8.14  5.21  2.  ]\n",
      " [-0.14  4.38  0.  ]\n",
      " [ 2.88  0.69  3.  ]\n",
      " [ 2.52  4.59  4.  ]\n",
      " [ 5.63  1.59  1.  ]\n",
      " [ 5.94  5.99  2.  ]\n",
      " [ 0.36  3.64  0.  ]\n",
      " [ 1.55  2.55  3.  ]\n",
      " [ 1.64  5.02  4.  ]\n",
      " [ 5.7   1.41  1.  ]\n",
      " [ 7.21  5.85  2.  ]\n",
      " [-0.25  3.13  0.  ]\n",
      " [ 1.76  3.12  3.  ]\n",
      " [ 2.71  5.63  4.  ]\n",
      " [ 5.95  1.41  1.  ]\n",
      " [ 7.24  6.61  2.  ]\n",
      " [-0.59  3.69  0.  ]\n",
      " [ 2.72  3.21  3.  ]\n",
      " [ 2.41  5.3   4.  ]\n",
      " [ 5.7   1.75  1.  ]\n",
      " [ 5.84  5.28  2.  ]\n",
      " [ 0.27  3.56  0.  ]\n",
      " [ 1.1   1.96  3.  ]\n",
      " [ 2.98  4.05  4.  ]\n",
      " [ 5.09  1.39  1.  ]\n",
      " [ 7.95  7.02  2.  ]\n",
      " [ 0.81  4.06  0.  ]\n",
      " [ 1.11  1.4   3.  ]\n",
      " [ 2.43  5.89  4.  ]\n",
      " [ 5.93  2.1   1.  ]\n",
      " [ 6.53  4.97  2.  ]\n",
      " [ 0.59  4.75  0.  ]\n",
      " [ 1.75  1.74  3.  ]\n",
      " [ 3.31  5.12  4.  ]\n",
      " [ 5.9   3.07  1.  ]\n",
      " [ 7.38  4.15  2.  ]\n",
      " [ 0.71  4.79  0.  ]\n",
      " [ 2.    2.22  3.  ]\n",
      " [ 2.83  5.45  4.  ]\n",
      " [ 5.62  1.48  1.  ]\n",
      " [ 7.19  5.89  2.  ]\n",
      " [-0.27  3.96  0.  ]\n",
      " [ 1.87  2.32  3.  ]\n",
      " [ 3.47  4.91  4.  ]\n",
      " [ 5.3   2.44  1.  ]\n",
      " [ 7.14  5.5   2.  ]\n",
      " [-0.02  3.59  0.  ]\n",
      " [ 2.3   1.87  3.  ]\n",
      " [ 3.27  4.12  4.  ]\n",
      " [ 5.04  1.71  1.  ]\n",
      " [ 7.16  5.49  2.  ]\n",
      " [ 0.71  4.12  0.  ]\n",
      " [ 2.87  1.59  3.  ]\n",
      " [ 2.54  5.37  4.  ]\n",
      " [ 5.69  1.46  1.  ]\n",
      " [ 6.8   6.01  2.  ]\n",
      " [ 0.39  3.14  0.  ]]\n"
     ]
    }
   ],
   "source": [
    "clusters = kmeans.labels_\n",
    "clusters = np.array(clusters).reshape(-1,1)\n",
    "clu_data= np.hstack((data,clusters))\n",
    "print(clu_data)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-08-30T07:39:38.157222Z",
     "start_time": "2023-08-30T07:39:38.061663600Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[2.77 4.98 4.  ]\n",
      " [2.83 5.31 4.  ]\n",
      " [3.21 4.9  4.  ]\n",
      " [3.93 5.03 4.  ]\n",
      " [3.82 6.21 4.  ]\n",
      " [3.8  4.66 4.  ]\n",
      " [3.03 5.18 4.  ]\n",
      " [2.7  4.85 4.  ]\n",
      " [3.27 4.1  4.  ]\n",
      " [3.13 5.21 4.  ]\n",
      " [3.46 6.57 4.  ]\n",
      " [2.44 4.84 4.  ]\n",
      " [2.81 4.39 4.  ]\n",
      " [3.69 5.93 4.  ]\n",
      " [3.17 5.77 4.  ]\n",
      " [3.38 5.19 4.  ]\n",
      " [2.99 4.64 4.  ]\n",
      " [3.5  5.85 4.  ]\n",
      " [2.13 5.57 4.  ]\n",
      " [2.71 4.32 4.  ]\n",
      " [3.36 4.72 4.  ]\n",
      " [2.51 4.96 4.  ]\n",
      " [4.04 5.32 4.  ]\n",
      " [3.06 4.92 4.  ]\n",
      " [3.65 4.65 4.  ]\n",
      " [3.62 6.01 4.  ]\n",
      " [2.41 4.81 4.  ]\n",
      " [1.86 5.28 4.  ]\n",
      " [3.27 4.54 4.  ]\n",
      " [2.79 5.06 4.  ]\n",
      " [2.89 4.63 4.  ]\n",
      " [3.14 4.16 4.  ]\n",
      " [4.25 5.19 4.  ]\n",
      " [3.43 4.85 4.  ]\n",
      " [3.77 5.07 4.  ]\n",
      " [3.73 5.09 4.  ]\n",
      " [2.98 5.28 4.  ]\n",
      " [2.43 4.98 4.  ]\n",
      " [2.52 4.59 4.  ]\n",
      " [1.64 5.02 4.  ]\n",
      " [2.71 5.63 4.  ]\n",
      " [2.41 5.3  4.  ]\n",
      " [2.98 4.05 4.  ]\n",
      " [2.43 5.89 4.  ]\n",
      " [3.31 5.12 4.  ]\n",
      " [2.83 5.45 4.  ]\n",
      " [3.47 4.91 4.  ]\n",
      " [3.27 4.12 4.  ]\n",
      " [2.54 5.37 4.  ]]\n"
     ]
    },
    {
     "data": {
      "text/plain": "<Figure size 432x288 with 1 Axes>",
      "image/png": "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\n"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "c_0 = []\n",
    "c_1 = []\n",
    "c_2 = []\n",
    "c_3 = []\n",
    "c_4 = []\n",
    "for x in clu_data:\n",
    "    if x[2] == 0:\n",
    "        c_0.append(x)\n",
    "    elif x[2] == 1:\n",
    "        c_1.append(x)\n",
    "    elif x[2] == 2:\n",
    "        c_2.append(x)\n",
    "    elif x[2] == 3:\n",
    "        c_3.append(x)\n",
    "    elif x[2] == 4:\n",
    "        c_4.append(x)\n",
    "\n",
    "c_0 = np.array(c_0)\n",
    "c_1 = np.array(c_1)\n",
    "c_2 = np.array(c_2)\n",
    "c_3 = np.array(c_3)\n",
    "c_4 = np.array(c_4)\n",
    "color = ['red','blue','pink','green','black']\n",
    "print(c_4)\n",
    "plt.scatter(c_0[:,0],c_0[:,1],c=color[0])\n",
    "plt.scatter(c_1[:,0],c_1[:,1],c=color[1])\n",
    "plt.scatter(c_2[:,0],c_2[:,1],c=color[2])\n",
    "plt.scatter(c_3[:,0],c_3[:,1],c=color[3])\n",
    "plt.scatter(c_4[:,0],c_4[:,1],c=color[4])\n",
    "plt.show()"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-08-30T11:43:18.975075300Z",
     "start_time": "2023-08-30T11:43:18.683072300Z"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "## DBSCAN算法"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 432x288 with 1 Axes>",
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYoAAAEGCAYAAAB7DNKzAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOydZ3gUVReA3zvbNwkESOgtAiJVQIoI0pEiVkQBxQaCDbufvSKKDRsqimAXVFQEBemKdKnSRHqHQAikbLbO/X5sEglbUthNQrjv8+Rhd+bOnTPL7J65pwopJQqFQqFQhEIraQEUCoVCUbpRikKhUCgUYVGKQqFQKBRhUYpCoVAoFGFRikKhUCgUYTGWtADRICEhQdatW7ekxVAoFIqzhtWrVx+TUiYG21cmFUXdunVZtWpVSYuhUCgUZw1CiD2h9inTk0KhUCjCohSFQqFQKMKiFIVCoVAowqIUheKsxelwkbz3KE6Hq6RFUSjKNGXSma0om0gpEUJw8lgaHzzwGYt/XI6maei6Tsdr23HXW7cSn1i+pMVUKMocSlEoSjXpqRl8NWoqv01agCMtiwpVyuNxeXBkONG9eu64P75fxsYl//DxujeIKR9TghIrFGUPZXpSlFoyTmRyT5vHmf7BbBxpWQCkHjlJxglHHiUB4PP4OJF8khkfzikJURWKMo1SFIpSy3ev/8yxA8fxur0FGu/O8jBr4vwoS6VQnHsoRaEotcz6ZD4el6dQx2RlOKMkjUJx7qIUhaLUkpnmKNR4IeD81vWiJI1Cce6inNmKkOzetI/Jr/zIX7+tQwhBu8tbMfjJa6l5fnXA70OY/dlCVs5cg8liotvgS7m0fztMZlNEzl+1bmX2bT1Y4PFmm5mBj19zxud1pGeRcSKTClXKR+xaFIqzGVEWW6G2bt1aqlpPZ8baBRt45spX8Tjd6Lr/HtEMGmariTGzn8EWa+XhLs/hcXtxZecx2GKtVKpRkXcWv0S5SnEBc+q6ztr5G9i1YS+xFWLpeE1bYuNDRyjN/mwh40ZOxJlZsDyJus1qMW75K1hsliJcMRzaeYRx901i7by/0YwGhCbofXs3hr0yuMhzKhRnC0KI1VLK1kH3KUWhOB2fz8cN1e7g5LH0oPsTalTE6/Vx4sjJgH1Gs4FWPZoz+pcn82zfs2U/T/QeTUZqBh63B6PJiO7TGfrKjVx7/+VBzyOl5NVbxrHkpxW4HC6k9CsrAAQBkU9mq4l2l7fi2e8fASDlUCq/TZrPns0HqFo3kT5Du1PtvCpBz5W89ygjWj5K5kkHUpd55qzXoi5vLRqFwWgI/oEpFGWAcIpCmZ4UAaydvxGPK3SkUVpKut8hEASv28faBRs5dvA4CdUrApCVkcVDnZ4l/Xg6Oc8lXrcPgElPfUNirQQuvbZdwFxCCB77/F5WXN+e6R/MJu14BjXqV2XR98vxegLlczs9rPh1Dcl7j7Lu9028c+cEQOJ2ejCaDPzw1i/c+HR/Bj/ZH/Bndv+zYhtSytw8jVOVRM6cuzbuY+n0VUFlVCjOBZSiUARwbH8Kuq6H3C+lDBuyaraYWDd/AxsWb2HNvA04M5040hwEW7y6HG4+fXpy0B/hgzsO8+7dE1j/x2aMJgNSl9jjbJisxqCKAsBgNDDvqz/5ZvQPuJ3u3O1ejw88Pia//BP1WiTxz8rtfP/GdAxGDRA4wjjOnRlOZk6YpxSF4pylRBWFEGIS0A9IllI2DbK/C/AzsCt7049SyheLT8Jzk6pJlRFa8BVDDiazEbczeOiq2+nhrREf4fP68HlDK5wcDmw7hNPhwmr/zw+QvPco97R9PNcUlKOY/l60Gd0XZk4Bf/22Fk8IReZ0uHh7xEekp2bm+lYKQsaJTP+1uTysW7CRjBOZJDWrTVLT2gWeQ6E4WynpFcVnwDjgizBj/pRS9isecRQAzTs3xhZjIys9eE5CuUpxfvNTCLxuL4X1feX6HrL54oXvg5qCfB5f2Hl8Hh/HDhwPq0yOHTheKNmMZiNNO17A/G/+5N27JwD+VZXu1anbtBbP//S/XDObQlEWKdE8CinlIqBw31rFGePz+UhLSccdIplN0zQaXJQU8visDCe3jhqIxR4YCWQ0GzBbCxdS2vji8zFb8h7zx3dLw68cgqAZNPre0YO4CvnUegq/WArAYNRIalqbt+4YjyMtC0daFlnpTlxZbrav3cUDHZ7G4y5cYqBCcTZxNiTctRdCrBdCzBJCNClpYc5mPG4Pnz4zmf4JtzOw5nCuLn8zo24YS/K+Y3nGZZ7MZO38DSHncaRlsWvDXh7/ciR1mtRCaALNoNGyezN63969UNnUFpuZYa/eFLA9lFkrHEJApwHt6XtHz6BKDPw/+sZ8opdyzG4WmxmLzcxTkx9k6tgZuLLcAWN9Xp20lHQW/7iy0PIqFGcLJW16yo81QB0pZYYQoi8wDWgQbKAQYjgwHKB2bWU3Ph2fz8cTvUezZcU23Kf84C3+cQXrFm7ko7Wvk1CjEgBrF2wMaePPYeHkxTRolcQnG8bicXvQDBoGg4HZny1k/leLClRKwxpr5fkfHqHJJQ0D9tVuVIPdG/cV6hp1n+S3iQu474Nh/PTurxzaeSRP9JZm0IirEBs249toNtLr1i440p3Ub5lE79u6YrIY2btlf8hjsjKc/Dl1GV0HdsizXUrJrg17ycpwUqdxzYCckX9X7+CP75aSleniws5N6HB1G4ym0v6VVJyLlOoVhZQyTUqZkf16JmASQiSEGPuxlLK1lLJ1YmJiscp5NrDi1zVsXbU9j5IA0H06mScy+fy5bwE4cfQkb9z+QYBv4HR8Xp3Pn/sOj9uDyWzCYPA/pV/a/+KwEVOn06xT46DbBzx8RYHnyEFKSeqRE1hsFt5dOpruN3XCbDNjsVswWUx0uLotH659nQ7XtAtqHjOZjVSqXoE18zawY90udK/vFKd+eHvV6T6Z5b+sZnCdu7i/w1M82fdlbqh+B28M/QBXlguP28PTV47hoc7P8f2bM5jxwWzeHPYBN9a9m/3bDhX6uhWKaFOqFYUQoqoQ/oB9IURb/PKmlKxUZyczJ8zDmRE8ysfn1Vk4eQkAv4yfUyjT0T8rtud5b4+z8eike7DYzfkfLCUpB4O7qLrf1AnNWLjb02Qx0bBtfQBiysfw8IS7+CnlUyZteZsfjk3i2e8fJqF6RR6ddDete7XAbDXl/hnNRnw+naP7Uzi08wh7txzgy1FTGdrkQdJTM6l1QfWQ57XFWrm0/8WAf+X25aipPHfNqxzbn4Iz04UjzYHb6WHh5MU83W8MHz/6Jevmb/AnEWYr5Kx0J6mHT/Bot+fx+cI77BWK4qakw2MnA12ABCHEfuA5wAQgpRwPXAfcJYTwAlnAQFkWU8mLgbSUjLD7XVlupJT88d2yAvsHhBBB8xk6X38JVZMq8/KN73Bw++GQx/s8PmLK24PuMxgM9Lq1K3M+W1igEFsAzSC4fHjPPNvMVjOVayUEbHvhp/+xf9shVs1eh8fl5fPnvg3IDXFnufG6vbx2yzgatqkf0hRmshjp2P9iHOlZPNL1Obav3R006svt9LBlxb9sWro1qDKWUpKZ5mDFr2u45Mo2BbpmhaI4KOmop0FSympSSpOUsqaUcqKUcny2kkBKOU5K2URKeaGU8mIp5dKSlPdsptHFDcLav6udVwUhRKHMRh6Xl/MvOi/ovoZt6vPitP9hsYVeWTRqfz7lKgbWhMph2Cs3klgzAdNpEVGaQctOlPNjspiw2M088dX9hQpTrdmgGlff24cKVcqjhcgb0X06m5ZtZcHkxSHn8Xp9aJrgrREfsWvjvrChwS6HO+z+rHQnW1ZsK/A1KBTFgfKcnSNcfW8ffv1oLt4giwVrjCW36mr7K1pzaMeRfJ3ZFruZPkO7h207WqdxLXrc3Jn5Xy3KU9hPCL8j+973hoY9R7lKcXy45jV+encmMyfMw5GeRZ3GNRn4+DXY42z8OmEeJ4+m0ahdA/rdeRmJNSuFnS8Uh3YeISsztPPdoOXzPCX9PqCl01YWqMlSOGVsMBmwx9rynUOhKE6UojhHqHZeFf73+b28ess4pC7xuDxomsBkNdF1UEf6DO0GwNUj+zD9wzkhFYXJYkIIv9P6zjdvyfe8939wB+c1q83kV34i9cgJQNC6dwvuePUm6jSqme/xsfExDHl2AEOeHRCwr0XXgGT+oKSlpLNx8T8goHmnxgHRRwk1KmKxmXE5AsNfAbweb9iCgM5MJzv+3oPJYsrXbGeNtWC1WzmRHFhQEcBg0Lj0uovzuSKFonhRiuIcotN17Wl8SUNmTpjH9rW7qFStAn2Gdef8i/5r9pNQoxKvz3+OZ68aQ1aGE92roxk1pIRugzpwXvO6XNzvIqrUKVhkmRCCK+/uTf2WSUwe8xO7/t5LyoHjbF66lWrnVQlItIskPq+PcSMnMvuz3zFZ/Le61+3lirt6ccdrN+VGahlMhpBKQghBjQbVSd57NOR5dJ9k2fS//PWkwiH8TvYHPxrBqAFvBuRlWOxmut7QgZoNqhXiKhWK6KPKjJ/DpB1P55eP5jLviz/wuLy06N6UAQ9fSe0LaqDrOusWbOTgjiNUrBZPm94titzE58d3fmHSU5NxZ3ly7fPWGAs1z6/O2EUvYouxRvKychl7x4csmLw4QAlY7Bb6De/BnWNvZc28v3n2qleDJtMB2MvbeHfpy7x43Rvs3XIg5LmEJkisWYnkvcdCjkmoWYk3Fz5P9XpVWTPvb94bOZGD2w/nZqBrmqDt5a24992hBVbECkWkCFdmvFSHxyqiR/K+Ywxr8iBfj5rKvq0HObw7mTmf/c7drR9j5ay1aJpGqx7N6TeiJ5dc2abISmL/vweZ+MQ3AU5cZ6aLPZv388Xz30XqkvKQciiVeV/9GXSl4HK4mDF+DumpGUx4/KuQSsJgMnDriwOp06gm1z7QL1RldQCkLilXKS54WROTgW6DO/L17g+oXq8qAM06NcIWY8lT40rXJStnruXu1o9x7ICKAleUHpSiKMNIKXE7g0fZvHbLOE4eS89jU9d9Oi6Hi1HXjw3r3C0MM8bPwReiZpPH5WHmx/MKFWlVUNbO34DRFNqvYDQbWT1nPTvX7wk5xufxsW7+RgASqlfAms/KZ9fGvTz/4yM07XgBBqOGwWSgSp1EHppwF098dT/aKU7xP6cuZ9+/hwKc37pPJ/Okg69f+qEgl6lQFAvKR1EGcaRn8eWL3zPz43k4M51YY61cPrwnQ569DlusjWMHUti8/N/QRfcELP5hBT1v7nzGsuzZvD9sxVdXlhtnpgt7XGQjfaSU5GdULYjZNWdM8y5N8o0EM1tNODNdvLVoFE6HC5/Hi72cHSEER/ensGz6KlxZbhq3P59fPp6LM0SZE5/Xx4JvFnP/h8PzlU+hKA6UoihjOB0u7u/wFAe2Hc5N6nKkZTFt3CxWzV7He8tfJnnvMQxGAx6CR+g4M5wc3pUcEXmqJVVGM2ghlZLRZMAaE/l+1Bd2aRJWQXndXlr1aE6dJjXZ9ffeoGNssVY6ZjcrssVYueSqNiz6flnIOcUptil/bw0Luq7z3r0T+W3SAoQm0L0+jGZjvpVxXc7g5jCFoiRQpqcyxswJ8/x5EKdl/nqcHg7uOMysiQuoVL0iznxMS+USQyfChSP1yAm+eOE77rvkSR7t/gIJNSthNAd/HjGajfS8pXMek0ykqFwrgQ7XtMUcJOHPYjPTY0hnyieUY9grNwVNCtQMGvZyNjpf3z53251v3hzQN+NUvG4vzTvnrV311aipzPn8dzwujz/T2+PDmenKt0xK7QtqcHh3MlNe/Yn3Rn7CzInzw/YAUSiiiVpRlDFmjJ8T0jnrcriZ8eFsWnZvhhAirOklJ4v75LE0jh9KpVL1ipSrFF55bFq6lSf6vITP48v1ffyzchtmqz/34lTHstlqomK1Ctz20qDCXmKBefTTe3j9tvdZOm1lbh6Ez+ujy8AOjBznT/Zr26cl948fznv3fOJ/4tclSEm186owavrjWGz/rXYSaybQ7cZLWfTd0oB8CYvdTO/bu+XJNHe7PPww9pegnfTCWb0sdjM+n86Qevdwqv3s3bsmMOiJa7j5+evzrF4UimijFEUJ4fV4WfrzX2xZsY2YcjY6X38JtRrWOON5M1LD13TKSM0k5WAqVrslZClwIQRH9hzlyT6jWff7JkwWIx6Xl5bdm/HgxyOClslwuzw83e+VgK54zkwXRo+Xei2S0DTBns0HiClvo+8dPbhmZJ+wmd1nitli4qlvHiB53zHWLdiIEIJWPZtTqVqFPON6DulM5wHtWTV7PempGSQ1q50nt+RUHp5wJwaDxoLJizFlK1OP28tlt3blrrduzTM2XGnyHDSDhtFsxJ3lxmAyoGkCa6yVvZsDj/V5fXz72jTKJ5bj6nv7FPBTUCjOHJVHUQLs2bKfR7u/gDPDSVaGE4PRgMGo0eWGDjw88a4zMsU80u151v++KeT+Vj2a8cBHIxjW5MGQWcS2WCuaQfMn3J1iS9cMGvGVy/PJxrHEVYjNc8zCKUt4a/j4kMrHZDXxzZ4PiU8sX4SrKn2kHjnB339sBiFo0bUJ5RPKBYzZvWkfIy9+MqSZTzNoDHjkCuIqxLLz7z0k1qxE7UY1eOeuCWEzvMsnxPHtoQm5CYMKRSQIl0ehVhTFjNvl4ZGuz3Py6Mlc84PP68Pn9fHH98uoXr8qNz7VP3e8z+dD07R8TQ1pKens/ecAXQd15J+V24OaO6x2Czf872qqJVWhfqsk/lmxPahT1ef14XF7A/bpPp2M1AxmfDibwU/2z7Nv3z8HwjYrMltMHNqZXGYURYUq8XS+/pKwY2o3qoE9zhpSUZgsRroNupTzmtfJ3Tbuvkn5lgFxZro4tDNZZXArig3lzC5mFv+wHFeWK6iN2uVw8f2b03E53fzw1gwG1hxOb9NAroi9ibfv/Ci7VlJeHOlZjB70FoNqjeDpfq8w/qHPMJoMmCzGXMerZtCw2Mxc98iVtOrRHIAnv36A8glxeRy5RrMRa4wVezl7yOJ2bqeH3z5dGLC9fGK5sJVivW4v5ROK5iA/W9E0jRFv3hy0N4fZZqJF16Z5lAQAMv+cEiklhjBOdYUi0qgVRTHz96LNAXb8U/G6vTx31atsXLI1d1XgynLz26cLWTZ9FR+sfpV/Vmxn+gezSTl0nJSDqWRlOPM4kAFMViPtLm9F5kkHNc+vzlX39M7zo1SlTiITN7/NrE/mM//rP/G4vbTp3YJr77+ce9s9HvYaTu+SB9D5+vZ89MgXIY+pXr9qblbyuUS3QZfi9fj46OHP8br9HfM8Lg/dB1/KveOGBYxv2/ciZk1aGPQzzqF8YjmqJlWOptgKRR6UoihmbLFWhCZCthr1enx5lEQOPo+PE8fSGHnxk6Qfz8hTtjsYHqeXk0fTeGfJ6JBj4irEcv2jV3H9o1fl2d64fUOWTV8VNCpKaIImHS4I2B6fWJ6hrwzm06en5JFdCIElxsIjk+4OK29Z5rKbu9B98KVsXbUDd5abei3qBvh4cmjd60Iq105g/9aDQfcbTAYV9aQodtT6tZjpMrBjWBONv9x1cCWge3WO7kvJV0nksHXVDhzpWYWWcdAT12C2Ba/tZLaaGPjY1UH39X+gH09PeZD6LZMQmsBoNtLx2raMW/FKyCiicwWD0UDji8+nRdemIZUE+M1Vj395X+h8DQnv3j2BJ/u+zKFdR6IkrUKRFxX1VAI8feUYf8/k08tM28xUq1clZMvNwqIZNO5573Y69b+40E7kOV/8zjt3fgxC4M5yY7GZkRIe+uROug++NN/jpZTqqbeI3NfhKbau2ObP6QiBpgli4mP4aN0bRW7YpFCcSrioJ6UoSgCP28PEJ77m14/noWkaPq+PynUSuO/9O1gybSW/jJ+Tf2+DgiD8pSd8Xh9X3HkZw9+4uVCht2kp6cz/5k8O7TxC9XpV6Ta4Y9jWpYoz59CuI2FDl0/FYDTQZ2g3VRNKERGUoiilOB0uDu04jDXWSrWkKgAc2H6IERc+EjK7uqhY7BYGPHIFtzx/Q0TnVUSWtQs28EL/N8g86SjQ+Jjydqalfh5lqRTnAqofRSnFareQ1KxOrpIAqFG/GiM/GBayPlJRcTlcTB37C66sgvk3FMXL7k37+Gv2OrxuL15P/n23c4j0A4VCEYwSjXoSQkwC+gHJUsqABsjCb+R+B+gLOIBbpZRrilfK4qfXLV3ZsXYXP707q0DjLXYLDVolYbaaWbdwA7ov+CpR0wTb1uyiaZCoJUXJsPPvPYwe9DZH9hzFaDLgdXsLVP48h7pNa0VROoXCT0mvKD4DeofZ3wdokP03HPiwGGQqFVSpUxlTPv2kDSYDNRpU4+63b+PN31+g9WUXouVT1iFc9VNF8XJkz1Ee7PQMe7fsx+VwkXnSgSvLXSD/BPgfEIY8MyDKUioUJawopJSLgONhhlwFfCH9LAfihRDnRN2CS/u3C9t6s0rdRGY5J/PZ1nfpO6w7mqbRtm/LsIpACEGDVklRkFZRFL59bVrQVq0hyb4fNIOG0WSg/wOXc8lVbaIjnEJxCqX98bIGcGqs6P7sbQEIIYYLIVYJIVYdPXq0WISLJpVrJ3L5iJ7ZDXDyYrGZuf+DOwLCT+s0rkXLbk0xWwNXItYYCzc9c12Re18rIs+fP6zA5y1EdJvE//AgwGA28sPbvzBr4vyoyadQ5FDaFUWwZ+qgBlwp5cdSytZSytaJiYlRFqt4uGvsrdz60kB/TSa7GZPFSFKz2oya8ThtercMeswz3z1Ex2vbYbKYsJezYS9nw2K3MPip/vR/sF8xX4EiHIVSEtlI6U+8dGW6cDncvH//JFbOWhsF6RSK/yjtJTz2A6d662oCwWsblEGEEFxzX1/KJ8Tx3evTOX4oFaPZSOrhE+i6HjQnwmKz8MRX9zPijVT+WbEdo9lI886Ng65MFCVLi25NWfzjipDlXAqCy+Hm06cn07ZP8AcHhSISlHZFMR24VwgxBWgHnJRSHiphmc6IlEOpfPnC98z/ehGuLDfV61Vl0OPXcNmtXQJMSbqu8+J1b7B67t+5ZTtOHkvnrREfsWjqMp6d+kjIBLqKVSso+3UpZ/CT17Jy5prC+SmCsGPdbnxeX24XP4Ui0pR0eOxkoAuQIITYDzwHmACklOOBmfhDY7fjD4+9rWQkjQzHDqRwV6v/kZ6amWt2OLDtEOPum8iWFf/ywPgRecb/PmVJHiWRgzPTxeq5f/P7lCV0K0A5DUXppH6LJJ6e8hAv3/g2AB6XF82gha0cG5Rsv8WpJO87xsyP57Jzw14SayXQb3gPkprVCXq4QpEfKjO7GBk96C0WTV0etFmQxW5m7B8v5imed3ebx9i2emfI+c6/6Dze/+vVqMiqKD7cTjfLZqzm6L5jVE2qzK4Ne/n2tWm4nZ4CmaWad27MmwtfyH0/98s/ePvOj5G6nqt8TGYjl4/oyZ1v3qJqcCmCojrclQI8bg9LfloZVEkAeJweZn0yn8SalZj75R8c2nkkZKnpHJL3pURDVEUxY7aa6Tygfe77tn1asnbBBjYt/gcpQCBCJuFZ7GaGvjw49/3uTXsZe8f4PI2ndJ+OK8vNzAnzaNSuAV1u6BC9i1GUSZSiKCayMpzBw7Wy0XXJpqVbuSnJ37fB7fTk++RXuZaqGloWGXvHeLb+tSO3eqzMvnNy7gd7ORu6rmOLsfLIpLtp3L6hf5yUPN//jZDdCZ2ZLr4e/aNSFIpCoxRFMbBtzU4+fPCzkF9gAKPJwN4t+/F5/1txhDMLWmMsKty1DJJ65ASLpi7H4wrMzpZSYrKYuOPVm0hqVpsL2jXIE8yw4tc1HNx+OOz8+/89Z4IGFRFEKYoo88/KbTza7QWcIZoR5eDz6QUOk7TGWGjVozldBqonw7LG5mX/YrIYgyoKAINB8zdByl5FnMrUsTPyvYesMSpMWlF4lKKIMu/cNSGskjAYDRhNBjSDICsjzDiTgbgKsSTWqsR1D/ajy8AOheotoTg7MJrCh7jmdA4MxsEd4VcTAD1v7lwkuRTnNkpRRJFjB1LYs2V/2DH1WyXx+Jf38b8eL4RVFNWSqvDpP+9EWkRFKaN558b4wjSt8nl9tO51YdB9CTUqcjRMgINm0Bj0+DVnLKPi3EM9kkaRzJOOfJ8QL2jbgJoNqtHz5s4hq8WabSZ63dY1GiIqShm2WBuDnrgmqInIYrdw+fCeIdvaXnv/5SFNS5pB47aXBlKhSnxE5VWcGyhFEUWq1K0csjcEgC3WSsM2/ryJGvWrofsCnyQNRgPlE8rRb0TPqMmpKF0Mfqo/Nz1zHbY4W269LmuMhf4PXM6dY28JeVynAe1p0a1ZgLKw2M006XAB1z10RbRFV5RRVMJdlBk3ciKzJi0Imm0bWyGGbw98zHev/8yUV3/GFcSX0bJ7M5746j71JHgO4nZ5+Pev7ei65PzW9QpUr8vn8zH38z+YOnYGR/enUKFKPNfefzl9hnVTlYMVYVEJdyXI8NeHsHvTPrau2oEr04mU/sgTg9HAmNnPcCL5JJNf+Slosxoh/Il6Skmcm5gtJpp2bFSoYwwGA71v70bv27tFSSrFuYhSFFHGbDXz+vzn+PuPzcz98g8yTzpo2a0ZPYZ0wh5n4+uXfwiZLyElbFqyleW/rubiyy8qZskVCoXCj1IUxYAQggu7NOHCLk0C9qUeSsXjCp2IJ3XJiwPe5ObnBjDwMRWxolAoih/lzC5hkprVyTcJyuP08NWLU9m1YU8xSaVQKBT/oRRFCdN1UMcCjfO4vUwbNyvK0ijOVXRdL1LHPcW5gVIUJYw9zsbzPz6ab0SL7tPZu+VAMUmlKIsc2H6IXz6ay68fz+XIHn9f+R3rd/Nk35fpYxlEH8sghjV9kD9/XFHCkipKG8pHEQGklOzeuJfU5DRq1K9KlTqJAft1XcdgCJ58d1HPC5m45W1uqX8v3hBZuUITAfOe7UjpBekEEaN6JEQRp8PFy4PeZvXc9f7PWQh0/VOaX9qIDYv/yRO6vWfzfl658R0OjRrI9Y9cWYJSK0oTSlGcIVtWbOPVIe+ScigVg9GAx+XhgnYNePKbB6ynwVkAACAASURBVPC4PHz6zBT+nLoMr9tL1aQqDH7yWnrd1jXgh9HlcNGmT0tWzlobtISD2Wrmynt6F9dlRRXpO4hMfx2ccwAJIg4ZMxQRcztCqFsy0oy56V1Wz10fEIK9eu7fQcd7XB4+eexLmndqxAVtGxSHiIpSjkq4OwN2b9rHyIufCGhVqhkEcRVj8bi9ONOduX0FwJ9DcdktXRg5bhgAyXuP8uKAN9m9cR8Gk4GsdGdAuOzpx5zNSN9B5LGrQaYBpzZxsoKlAyL+A7W6OAOklGxbs5Mju4+SULMS8ZXLMazJg0HzdPJDM2q8NufZoNF6ipJH6ung2w0iDmGse8bzqYS7KPH5c9/icgRmXOs+ycmj6UGPcWa6mP3pQvrdeRlV6iQysv1TnEg+6e98l3XKQAEWm4VaF1Rn4GPX0Om6i6N0FcWLTH8ziJIAcIJ7KbhXgqVdSYh21rPz7z28OOBNUg4eRzNo6LrEHKJ+WEHQvTovXPcG3x2agNGkfipKC1JmIdNehKxfQJhAepFaJbBcCloCwtwKzJcgRORc0Op//wxYOXNN2OZCofC4vfw2aQHV61XBcdIRtD2qAFp0a8pL0x+PgKSlAyl94PyNQCWRM8CJzPoWoRRFoTl2IIWHOj9L5klHnu3ODOcZzevz+Fg5ay2XXNnmjOZRRAYpdeTx28CzCXCBzLZm6Acga4p/jMMOWgJU/BJhqBaR85Zo1JMQorcQYqsQYrsQIuAXUQjRRQhxUgixLvvv2ZKQMxS+EP2v80P36aQePsGCyUtC9qqQElbPWX8m4pVCPIRUEgBI0I8XlzBlih/fmYkrSD2xM8Xj9nJ4V3LE51UUEfcy8P4DhGmEJh3g2488PgQpi/YbdTolpiiEEAbgfaAP0BgYJIRoHGTon1LKFtl/LxarkPlwQdv6RTrOYjNTv1VS0JXEqUg9Mv/JpQcLaBXC7DeDqVmxSVOW+POH5WFb7RYVk9lAYq2EiM+rKBrSOcOvCPJFBz0F3Esict6SXFG0BbZLKXdKKd3AFOCqEpQnKCePpfHli99z6/kjubHuXbx++/u5zYhueeEGLHZz4ScV0OvWrnS4ui1mW+jjm3S4oKhil0qEEGAfBthCjNAQ9sEBW6X0IZ0L0E88hJ56L9IxFSmzghx/7lLQNrqFRQiNdpe3isrciiKgF0RJZCMzke7VETltSSqKGsC+U97vz952Ou2FEOuFELOEECHDL4QQw4UQq4QQq44ePRoRAQ/vTmZYkweZMuYnDmw/TPLeY8z/ahH3tHmMFb+upmW3Ztz73tCQrSlPx2QxYrGbeebbhyifUI6+w7qHdDZabGZueeGGiFxHaULE3AKWziBs+D0xAGbACuXfCLCpSj0NmXI18uRD4PwFXHOQ6S8hk7sivTuLW/xSS7t+F2EI0SRLM2jUaVwz4KFG0wT2cjZ6DOkUEGkmhL+PxVNTHjgjh7giwpg7APYCDjYgRGR6pJdYeKwQYgDQS0o5LPv9EKCtlHLkKWPKAbqUMkMI0Rd4R0qZb2B3pMJjH+z8DJuXbM0T3pqDxWamWZcmrJu3AZ/Pi8FgwOfVA5zbRrOR+MrlqFq3Mk06NOTKu3tT+ZSl/K4Ne3iq3ytknMjE59UxGjWkhAc/vpOuAzuc8TWURqSU4FmNdHzrXx6bmiPsAxGGqgFj9dS7wbUION3+LkCrhkhcENHojrOVQ7uOMPzCR4I6ry12C++vfIXta3fz1UtT2b/1IJpBwxprwevyElcxlq4DO+JId7Bsxmp0r4+WPZoz+IlrSGpWpwSuRhEKqTuQRzuDPFmA0RZEwjSEsV6B5g4XHluSiqI98LyUslf2+ycApJSvhDlmN9BaSnks3NyRUBTJ+45xW8P7Chd/LsBkMeFxehCawGIz0+ji8xk1/TEsttCaXdd11v++if1bDxJfuTxt+7YMO/5cQfqOIo92JVBJZCNiEPHjEJayqVALy+ZlW3n+2tdxOlzoPh3NoGE0G3nm24do2c3v+5FSMmbIuyz9+a88+T9mq4mqSZV5b/kr2ONCmQYVpQHp2YpMvdVf1UBmhhhlBUs3tApvF3je0ppH8RfQQAiRBBwABgJ5DNRCiKrAESmlFEK0xW8qC909PoIk7z2GyWIqnKKQflvxFXf3wh5rpeO17WjYpn6+CWSaptGyW7PcL7MiG+92EBaQIRSFdIF3CyhFAUDj9g2ZvP8j1i3YyJHdR0msVYlWPZpjMP5nklo7f0OAkgBwOz0c2pnMt69O47aXBhW36IpCIEwNIXER0vENpL9B0GhC21WIcs9F7JwlpiiklF4hxL3AbMAATJJSbhJC3Jm9fzxwHXCXEMKLPx1toCymJVBCjYp4XIXPZjWZjTTr2KjMmo2KFa0cEKaiqTCBiCs2cc4GDAYDF/W8MOT+n9//LUBJ5OBxefjlo7lKUZwVGCHzc/yr7dN/EjXwbotoOZwSTbiTUs4EZp62bfwpr8cB44pbLoCqdStz3oV12bpye6GS6rweHyePpkVRsrKN9KUgHV/4Hde6259QEnKwDtbLik+4MkDy3rBWWzJOhDJlKEoVnr9AHidQSQDo4NmM9O6OSGkPUGXGw/LYFyOJibdjNP+3dM/PjGQ0G6jZsHq0RSuTSO8e5LE+kDkRfPtAHiF0YpENYu9BhM3LUJxO7UY10bTQ93Clav7PU9d11sz7mxnj57Bk2krcRVhdK6KId7v/QSkUwgjeHRE7nSrhEYaaDarx0brXefXmcWz4c4s/Vl1AbHwsmSczg8au2+NstOrxn68hM81BVoaTCpXL57EVKwKRJx4KUgcq57WGP5xWA0MViLkfzV7q0m5KPdfe35cl01YErVFmsZvp/+DlbFuzk2euHIMjPQvdq/vvWwGPf3kf7a8I6utUFBHp+ReZ8R64F/lXz+Z2iLiRCFPz8AdqFUAYgi8o/DPnk9xaONSKIgxSSsY/9AVb/9qRqxSkLslK9ye9WE5JljPbzMSUtzP61yfRNI1dG/fyaI8XuK7yUG5pMJL+ibfz2bNT8Hoinz1bFpDeveD9l5AlPoQNyo1GVF6KSJivlEQRadimPjc8djUWuyXP6tgaY6Fphwto3bslD3d9jpSDqWSlO3FluXGkZ+FIy2L0oLfYuipyT6nnOtL9FzJlALjmgszCXxhzETLlJqRzQfiDLV1AhvPf2cHUImKyKkURhvW/b+Kv39biOq0ek8+ro2mCmg2rU6FqPBa7hYTqFRjx5s3UbVKL3Zv2cX+Hp1i3YCNetxd3lpvMkw6mvjmDF/q/UaRCgmUe30EQYbLcpQuhH0No5VUZ8jNkyDMDeG3uM3S4pi01z69Gs06N6DGkE3v/OcAdzR4iKz14IUF3lpsvX/iumKUtm0gp/Stossj7cCQBJ/Lko8hQ0X6AdPwAhHrotCLKv6qqxxYXv06YF6AkcvB5dXas243QBFKXHNxxhA/u/4zZkxZisZmDJj65stysW7iRTUv+oWnHRtEW/+zCUBVkODu4GSliQM9AaLHFJlZZpXH7hjw3tSEAEx77kunvzw5ZoDIHKWH9wk3FIV7Zx7MOZPBWBH50cP0J1u4Be6RzIaS/RnBFYYD4DxCWjpGSFFArirAcP5QaNugG8tbYcWY6+Xf1TtbM3xDyOJfDzezPFkZQyrKBMNYF43n8V9bjdByQPgaZ3Bb9+M1Iz7/FKF3Z5cieo0x7b1a+SiIHEcYRrigEejJhf36lD/TgpYhkxjtAqPLxRvBGXpkrRRGGBhedV+A6Tjnkl3shpST9uApBDIaIfwNELBCqtpAL8IJ7OfL49UpZRICFUxYHLVETiqJWTFachqEuyDD+SmEAQ2D5FCl1f5JpSFyQ9dMZi3c6SlGE4ap7eqMZIvsRWexmGl/SMKJzlhWEsT4i4Vew3wiiIuGfuBzI9NHFJltZJS0lo1DlyV1ON26Xh5Wz1rJg8mJ2b9qX/0GKAISpIRjrEPIeF7FgDtbAS4Q+JgffbvTML85QwrwoH0UYqiVV4aEJdzL2jvHoXj0iEUtC0+h9e9cISFc2EYaqYLsamfUd4ZscAe6/kMpncUbUb1EXi90S0hd3OtvW7GJAlaGAf3Wse3XqNq3F8z/9j4TqFaMpaplDxI9Dplyf3V8i5/O3gDAhKnwU1BkthECaO4L7jzAz65D+OtJ2bcS+G2pFkQ/dB1/KJxvGctW9vahRv2qRVxgmixFbnJXRvzxBuYqq7EQ4ZNroAjZnMWSHFSqKSsf+FxcqCs/j9OBI84fL5oTPbl+7iwc6PI3HrZLyCoMw1kEkzobYe8HYGIwNIWYYImE2whSsh1v2cXEP4S/NH3ZycEXOF6oURQGodl4V7nzzVsYuerFISXMGk4GeN3dm8t7xNO8U+gZQgNQzwLO2YIOFFTT1FHsmmC0mugy85Izm8Hl10lLSWfzjyghJde4gtHi02BFoCdPQEmagxd2PMCSGP8bUCGLvJ3TgB37/h4xcKSGlKApBxaoV6DeiJxZ74UqAGwwaQ1++kZjyMVGSrAwhs/DXiMwPK8Tcir+jruJM6HJ9B6wx+dzT+QQ7ZWU4+fOH5ZETShEWYe1D2FWFMIAxch0ylaIoJHeOvYWBj12FPc6GPc6GLdZK+cRynNe8DmZrYLSOxWamx5DOlKukzE0FQqtI6Fapp2CoiYi5M+rinAtc1LM5FatVCGlWNRg1zmtWJ1+zq0okLUakAww1Cf4TroFWBUyRa2GrFEUh0TSNm54ZwPfJE3nz9xd4Z8lLfL79PRp3aIjX819KvWbQMFmMdLy2HSPHDS1Bic8uhDBAzE35DzTUUquJCKFpGq/Pf47q9apgi7UihMBoNmKyGGnTpyUTNo7lo3VvUOuCYJ2K/dhirVx6bbAoHUUkkb4U9JTrkSnX+asZnF7sSdhBq4So8ElEKxiUWIe7aBKpVqgFwevx8kDHp9m1YW+eJkdCQEz5GCZseJOEGpWKRZaygq47IflCQlc808DWH6183vBYKX3gWe/PeDWeH9B/WxEeKSXrFm5k89J/MdvMdLi6DdXr/deedsWvqxl1w9iAgoKaQSOhRkU+3fqu6q8dRaTUkcf6gm8vgVnZBjBcgIi9Gax9i9Qru7R2uCsTLP5xBXs2HwjohCel32771agfeGD88BKS7uxE06zolm7gWkBwZWFB2Abk2SKd85BpT/u73iFAepDmdoj4NxBafHGIfdYjhAjbabHd5Rdx3wd3MG7kRH+Ypi7RdZ3aF9TghWmPKSURbdx/gn6E4KU7fCCPgvXqqNRCUyuKM+TRHi+wbsHGkPttcVamn/yyWGQpS0jvXmTKNdk9gU/Np7CCpSsi/u3cL4R0LUGm3kVgWQMTGOsiKk1XZqoI4na6WT33bzJOZHJe8zrUu7BuSYt0TqCffB6yvgkzwopImIkw1izS/GpFEUUyUsOX43BnqdjyoiCMtaHST8iTj4Fndc5WwAMi3v9vdtSHTH+N4LVvPOA7AK5FYFVJjoVlx/rdTH7lJ9Yt2IDBaKBj/4u54dErOXYwlekfzGbDn1vQDIL2V7Tmpmeuo1bD0D4MRSQowEohSpWVlaI4Qxpf0pBdG/fi8wSvDV/zfGUnLzL6YfCcWuBMAj5w/oTU90GFiX5/hHdb6DmkA+n8FaEURaFY/stqXho4FrfTk1v4cubHc5n96QJ0n47H9Z/54/cpS1j68ypen/8sF7RtUFIil2mkdy+48wk/1mJBi053zSJFPQkhekZakLOVa+/vizFEEp41xsKNT19XzBKVHWTaKIKvFJzgXuV3XOMj/yct1SyqMLidbl6+8W1cDnee6shejw+Xw51HSQDousSZ6eSVm95VIbJRQOrH/Q2OfLvCD9RPILO+j4oMRQ2PnRhRKUohB7Yf4tNnJvPm0A+YNm5WyKbzNepX43+f34vZZs7NozAYNcw2M/1GXEaXG84s6/VcRfqOgTfcF8OJTBuD9KX5W6OGQtgRFrWaKAzLphfNv3f8UCo71u+OrDDnGNKXjJ7+LnrKjeipdyGd85EZnwfx1QXDC2mjkPrxiMsV0vQkhJgeahcQkXhPIURv4B38qbifSCnHnLZfZO/vCziAW6WUayJx7lM5diCFn9//jRW/rsFgMhAbH8PmpVvRfTpejw/Lt0uZ+MTXPDv1Edr0Cmwv2Om69jS7tBGzJi1g57rdJNSqRJ+h3anTqGhOJQUgnfn0BAa8ayClL4hEwMJ/hdVy0PxVOK19oidnGSR5XwoeZ+F9awajgdTDJ6Ig0bmBdC1Bnrg7u8WpPwRZupdllyMP3e0uYJ6s6YiYWyMqWzgfxaXATUDGadsF0PZMTyz8YSjvAz2B/cBfQojpUsrNpwzrAzTI/msHfJj9b8TYvPxfHu81Cq/bF7KXRE5lzReve4NJW94hsWagnqxQJZ7BT1wbSdHObQxV8Tur8yv65wF5EH8PCzP+W9rrL4qmVc5OPMqngJoiD1XrJmKymvIkkBYEr9tLtVPyLhQFR+rp2UritPu9QMUxT8XlD+CIMOEUxXLAIaUMqGcrhNgagXO3BbZLKXdmzzkFuAo4VVFcBXwh/YbP5UKIeCFENSnloQicH5/XxzNXjAnZI/h0vB4fMz6cze2jB0fi9IowCGFExgyHjLH4/RD54QNLb4S1M+jpYGoEptaqv3YRuPiKi9C0wlmlNU2Q1LwONRuo4I2iILOmhV89FxgbwpgUiYnyEPJukFL2kVIGrVMrpewUgXPXAE7terI/e1thxwAghBguhFglhFh19GjwFoKns2LmmkKVRva6vcz94g/lsCsmRMzQ7Ho2BUEH90KE7RpEzM0IcxulJIqIyWzi2amPYLFbMBj/+4kwmo0YTAYQeVuiWmxmyiWU46nJD5SEuGUD72byXz0XBAnWfhGYJy8lWesp2Lf49F/ggozxb5TyYyllayll68TE8GV6czjw76FC22KPHz7BV6OmFuoYRdEQQkPE3keBigRC+NaSikLRqnszxq99nV63daNy7QRscTa8bq8/DFz+1yveFmtlyHMD+PSfd6hat3IJS30WoyVSsGwFA/6f7dN/Gg2AFcq/jtDKRVq6ElUU+4Fap7yvCRwswpgiU6FqPKZClh3QfTrfvf4zrqyCdQRTnCHWXqDFUaBb1VBHrfYiSM0G1XjwoxHc+PR1ODODm2ezMpz88f0ylv+yGmcBu+QpAhG2qylYeX0NzN0g7gWIeRAM9UGrCdYrEZWmotl6RUW+klQUfwENhBBJwu9tHAicHmk1HbhZ+LkYOBkp/wRAh6vbFKqxfA6aQWPL8jBJXoqIIYQZUXEyGGqByGdl4duBTB2BrucXRqgoDF88/12efIrT2bZ6J+/c/TEDqgxl2YziKZ1T1hDG88A+iPxXzx7w7UCLGYgWdxda4ky0ygvQ4l9FmM6PmnwhFYUQonbUzgpIKb3AvcBsYAvwnZRykxDiTiFETqOBmcBOYDswAbg7kjLYYm08+PEILPbCRcUIIdSTazEijLUQCXMQFSaA/SZCL9EluH+H1NvU/0+E8Hl9pBzMPy7fmeHCmeli9KC32LVhTzFIVvYQcU9AuefId2Xh2xOVXIlwhFtRTMt5IYT4IRonl1LOlFKeL6WsJ6Ucnb1tvJRyfPZrKaW8J3t/MyllxB9Xug++lDG/PU3L7s0wW01YYyy0u7xVWJOU1+PjgnaqVEFxIoRAmNuilXsWjE3CD/asAOevxSNYGUczaIXqE+9xeZny6rT8ByoCEEKg2a8Fc5t8RurIlIFIWfDcijMl3B1wqrfkvGgLUpI07diI1+Y+y6+Ob5iR/hUvzXiCRhc3QNMCfekWu4Vr7uuDLcZaApIqAND35zcAmflJsYhS1hFC0KZ3YJJpKHSfHraasiJ/hP3mAphZk8E5t3gEIryikCFel3n2bT3A9rW7gvovajeqwW0vDSoBqRS5aBXzH+Pbl/8YRYG4553b/WGxBcRoVrVGzwhLNzBdms8gB9IZqnhG5AmnKC4UQqQJIdKB5tmv04QQ6UKItOISsCR4955PQibh7dm0j0M7jxSzRIo82G4h30KAWvliEeVcoNp5VRi/9g0Sa+VfucdkMdJ1UIdikKrsIoQG8a+T7z0ui6+FQbiEO4OUspyUMk5Kacx+nfM+8oG6pYS04+lsWvxPSGeoz6cz5/Pfi1coRR6E/Wow1AkzwgK2G4tNnnOBuo1r8s2e8Xy9+0PuHTcUW5wtT9Id+JPwrDFWrr3/8hKSsuygaTYw1Aszwgim4utRXpLhsaWSjNTMsEtnn8fH8UOq8FlJIoQZKk0DLVhgngWMSYgYVWYlGlSuncBVd/fmw9Wv0rBNfcw2MzHl7ZhtZhq2qc97y1+mYtUKJS1mmUDEPQSE8oV6IXM8esZHSPfaqEf5KWPiaVSqXgHdFzoO32K3UK9F3eITSBEUTbMjE2chM78Ax2egHwMtHmyDEbHDEPk5AxVnRI361Xhv2csc2nWEo/tSSKxViWpJYcq9KwqNsPZAxtwNmWNDjMiEjLFIYQWtGlT42N8ZMgooRXEaFpuFHjd3Zu7nv+MOUt5DCOg5JBKlrhRnihAmROxQiB1a0qKcs1RLqqIURDQRRvxVkUOFwkp/xVnfbuTxgZA4PyoPScr0FIQRb9xM3aa1scb+t+zLKTDndnp44bo32bz835IST6Eodo7uT2HmhHnMGD+HfVsjX8ZaEQLfAQrWi0IH3QFZ0ckfUiuKINhirLyz5CWW/vwXU8b8xPZ1u3NLGOg+nbXzN7B52VaenvIQF/e7qISlVSiih8/rY+zw8fw+ZQmapqFn28Kbd2rEs98/jC1WmfiiijEJv5+iIK0QHEjnHIQ98u2X1YoiBEaTkQ5Xt+XwrqNB69y4HG5eu2UcPm/hmrsoFGcTHzz4KX98txS304PT4cKd5cad5Wb975sZNSCU7VwRKYTtSgqVxiai85OuFEUY1szfgM8XWhH4vD7WqizUEke6lqAfvxU9uSP6sSvQM6cUa3mDskrGiUx+m7gAlyPws/S4PKxftFmZoaKM0OKh/Kv4VxX5JD0KO8IandBkZXoKw8mjaWGrZkopOXm0TOcelnr09LGQ+Tm5TV/0ZEgfjcx8D2m6CEwXIGzXIQyqV0Jh2bJiG0azMWhQBwC6ZPxDn5NYK4H6LZPoNrgj9jhlioo0mq0v0ljPX5bGvQT0FAJXGQZ/xQJrdMqMK0URhloNq4eNT5ZSUrNhdQDSUtL9NfkzXTRsW5+GrcMlyygigfRsgMzPCLTfukA/Cq7fwLUAmfEhstwL/oJrigJjyKcYoNvlYdWc9eg+HWuMhY//9wWjfn6cC7vkU7RRUWiEqSEi/nUApHMe8uSTgAcQ/gxtU1NE/LtR6w+vFEUYzm9dj8RaCezfejBAYQhNkFgrgQatkvj8+e/47rVpaEYDuldHaIJaDasz+tcnVPJRFJGZX5J/REj2/rTn0Y3nIYQBsCAN/teqXWpoGl/SEJ83fG+PnJwjZ6a/adHTV4zhi+3vUaFKfNTlO1cR1h5g6QLu1SBPgrFBVPpkn4ryUYRBCMGLPz9GuUqxeXpWWOwW4irG8uLPjzH9g9lMfWO639mX4cTtdONyuNi1YQ8Pd3lONdGJJr5dQEE/XyccH4RMuRGZcgUkN0YeaYSeejfSuz2aUp51SClZu2ADE5/4mqSmtTAWoiCg7vPx68fFV9W0rCHdf6EfH4J+uCn6kQvRTzyE9O4MGCeEEYx1/D3lC1Ik8wxRK4p8qNmgGp/9+x6zP1vIou+XAdBpQHt63doVW5yVr178PmgLSJ9XJ+VgKn/9to52fVsVt9jnBoba4NlAwZWFL/svBx1c85DupVDxK4SpaeRlPMvIOJHJ/3q+yP6tB8nKKEhIZl7cTg/rf9/MTc9EQbgyju74GdKeIdeUKgHnTKRrAVT8EmFq5t/s3e43PXk2gzCDdCMtXRHlR/md31FAKQr8ZcWnjv2FDX9uwRZrpc/Q7vQY0gmr3QJAbHwM/R/oR/8H+uU57sD2Q7iyQps+sjKcrJqzXimKKCHsQ5DOeeQ6souKdCBPPolIKL6yzaWVV256h90b9uJxe4s8h72ccmgXFqln5FUSuej++/PEo4jE35DevciU60Fm4s/Kzv79cS1ApmyFhOkIEfleOee8olj80wrGDHkXr9uba4/du2U/P7w1g3eXvUxchdiQx2oGLWxUlBACg1FZ96KFMLdA2geCYwpnrCy8u5HefQhjrYjIdjZyZM9R1s7feEZKwhZrpddtXSMo1TmCay5hPQG+g+iejZD5BUgHgVFPHvAdgaxfQCXcRZa04+mMueldXA53HqedM9PF4d1HGTdyYtjjq9atTPnE0BXXLXYzHa5qGzF5FYFo5Z5AxL8FplYg4vHHmhfFQe1BHuuFfrgResogpGt5hCUt/WxbsxOTpejPjmariTpNatHucrWCLjS+Y4QPzHBCSn9w/kxoU2sWMisqXavPbUUx/+s/Q+7zur0s/nEFjvTQT6pCCIa/NiSPozsHk8VIUvM6NO14QURkVYRGWLuhVZqCVmUlIvEPsPTCX0it4E5Yv+/C6//XsxqZOhzdcW71frbFFs5kUT6xHCaLCVucFYvNzGW3duX1+c9hMBTmc1cAYKwLwpLPIEm+WdrSESGB8lIipichREXgW6AusBu4XkqZGmTcbiCd7G+xlLJ1JOXYu3l/WB+DwWjg+KHUsElEna+/BGeWi/EPfo6u6wjhbzDftk8rHv3sHhV+WcwIQ2VEhXfRPXsgfTS4fy/iTE5IexZp7YnQYiIpYqmlWafGBa4WYY218viX91G/ZV0yUjNJqFkp16enKAKWLoDpDCcxgbl9BIQJpKR8FI8D86WUY4QQj2e/fyzE2K5SymPRECKxdgImixGPK7hN1uvxUS4hLt95et3Sle6DL2XTkq04M53Ua5lEQvXoh6wpApGef5Bpz4BnC0UzQZ2CMIBrPtiujIhspR2zxcSdY2/h/fsnBS3bf8IpxwAAIABJREFUkTvOZqbhRefRqkczNE0jPlG1nT1ThDBBhY+QqbdntzgtSgkaIyJmSKRFy565ZLgK6JL9+nPgd0IriqjRc0hnvh41Neg+TRM079SIchXzVxTgLyKoMlJLFundgTw+KDsiJBITurPLJZw79BnaHVuslQmPfeUvYSMluk9H13XMNgtISZ9h3Rk25iY0TSN53zGmvTeL1XPWY7aZueyWLvQY0glbTOQjb8o6wtwSEn5DOr6GrOmgHyZ86LcRv7nUDgJE/PsIQ43oyBbtFnpBTyrECSll/CnvU6WUASnMQohdQCr+BfFHUsqPw8w5HBgOULt27Yv27NlTIFm+e2M6Xzz/Ha5TciEMJgP2cjbeXzlGNWU5i9BT7wHXPApVbTMcIgYR/xbC0iUy851FSClJ3nsM3adTpW4i6cczyDzpIKFGRcxWv09u/R+beLrfGHweb26klMVuIT6xHO+teIUKldVKo6hI73bksWsJXV7cCvaBgAFhrAfWvgjNfkbnFEKsDmXej5qiEELMA6oG2fUU8HkBFUV1KeVBIURlYC4wUkq5KL9zt27dWq5atarAsv41ex1fjZrKjnW7MFvNdBvckYGPX6PMR2cRUkrkkSb4n7AihJaASPwzu+yH4lTcTjfXV7uDzJOBzlODycBFPZsz+pcnS0CysxspsyBrJtKz0R8yq6eQN0kUQANjfbSEXyJ67nCKImqmJylljzACHRFCVJNSHhJCVAOSQ8xxMPvfZCHET0BbIF9FUVja9GpBm14tIj2tolg5Pev6TLCAMCEqTFBKIgSLf1wRsre8z+Nj3YKNpB45oWo+FQLpXotMHQpSBxz4o/Z8/GdiAoQdRCwifnyxylZSPorpwC3AmOx/fz59gBAiBtCklOnZry8DXixWKRVnDUIYkYY64NsdYoQJv0kq2IrDBKaLADdIL1i7ImwDEYZK0RL3rGf/v4fClvgwWUwc2pWsFEUBkfqJbEf2qf61nAcfAYaGYKyOsPQCW9+oZF+Ho6QUxRjg/+2deXxcZbn4v8+ZfaZpmnRhX2QR4Sqy1LIKiMjqtYAWKqDIRbiAXhH8qXCBC7jhhguIC5tYQZF7ochOQUAEN4pUBUVWEQShbdqkSWY/z++P9zTNJDNnJmmSmTTP9/PJJzNzznnPM2/T9znvs94kIicD/wAWgDM1AVer6uHARsDiILw0CvxEVe9pkrzGJECm/Rfac75rNj+MKMT3hMJvqczijkNkNtJx2bjVydkQ6dh4Bol0osK3N5hioUTHRuajaBTtvxm01o64CNqNzLitaeH2TVEUqroSeHeVz18FDg9evwC8fYJFG6B7RQ/3/vBBnv79c3RuMoNDTzqQ7XYd31K+xvohqX9HS89C3w9x0SJFXESIIB1XQmx3tP9n0H8VlF8DmQapDyDTTkO8drT4LJpbAuSQ+FyIvxMZp9aSk539j9mL7599Xc3jW75lMwsEGQmF3xHaF9tf4XYbUruk0Hgy5Ws9VeOxe57gcwsuRX0lny3gRTzuufYBDjhmb86++nQ8zxaPVsVrOxtNHYPmbofySiT2lsqIkPgu4J0FXgfE93QmKy3ir/oE5B/CKZcy2n+9O6fzeiSyaRO/UWsyvbON07/5Eb7/qUUVuwrPExKZJJ/+4ceaKN0kpG5Sp7pKsU3CFMUQVr62ios/cGnFH79f9sn3F/jlTb9h+7nbMv+MQ5sooVEPiW6OTDu94jMtvYKuPgNKLw1qQB+F9kvQwmOBkhj0RKd9UM6iXR+GWUtsZ1GF9/7nwWy67cYsuvh/eWbpc0RjUfY5ah4nXPABNttuk2aLNyFo8engb8eH+N4Qe/uozEOSOgrNP1i7BEd8r3HrXtcIpiiGcMcPlqA1mg3l+vPc+OXFvO/0Q6w0xyRC/T606xjwu3BlmwcdW322+6xqJqzvwhMLj0LinRMj7CRjt4N2ZreDdm62GBOOag5d9TEoPIbbhSrIDyCyHXRe07C/S7XgOjX2X1dbSUgaaZvwfOQK7DFpCE898nTtZvJA12urKeRGk15vNAvN3gZ+L9WzXHOE5l5oH1p4YpwkMyYr2v3fUPg97u+njHsAyULpaXTVGY2NoUW06yTo/Tb4rw856uGi8XZGOm9AYjuM7RcYIbajGML0meElO8QTonGbtklF7g5CHYV1yiRMdCii0dpoeQXkllB9F1qE4pNo8Rkk9uZ11xSfRHuvCKLuPEgcCNHtofgk1f82Y5A5Da+tNXw9tqMYwqEnv5tkpnoVTM8T9jlynpVRnmyUXlyPiyOQPHjMRDE2AIp/qu9YLv5h4KXmHkRXftAVmNQ+0DWQuw16L6V2w6085FqnzL0piiHsdtDb2GmvHUikKv8QRIRUW4qTv3RckyQzRoP6faCrw0+STqDariEJycOQ6NbjIJkxaanXN0K8AUWiWkBXnwkMzTdpoLeEP6zzQtMwRTEEz/P4wh3ncPQnjyDTniaeihONR5l3+K585/dfZtNtq5WvMloWfzmuiVEIsZ2h/VLwNgFSIBlXKiF9ItJ+yURIaUwm4nMJNVdqOegvAZq7k3CzZwiRLUd33ThgxvYqxOIx/uOLx3HixcfSvaKHVFvKyiZPVrwOwgsFRpzDMHkQGpkDpb+ANwdJ7GO+CaMqIgl02lmw5hsMNx2lIL0Q8YKCorlfjPIuKWTaKesh5dhiiiKESDRC58bDitoakwjx2tH4nlB4hOpPgVGIbocuf1dgooqAFtHYjjDjW0hkauQDGCPDy5yITwx6v4l7EBFAIXMKkhmUw1O1nEwdJAXJIyDROvlapiiMDR6ZfhG68mjQXip3FylILYCezw7/D138E7pyAcy6B/GaUzbBaG28zHFo+hgoPQOUIbrD8KS42C5Q+NUIBt0Iaf9qUDWgdXK1zEdhbPBIdHNk1u2Q+iBIO5CE2C5Ix2XgvwJazYZcBn8Nmh1W2Bj1u9DSi653gLHBo1pwJcALf0C10iktEkViOyGxt1XPnI5uNYI7JSH9ESSxV0spCbAdhTFFkMhGSPsF0H5BxecuOapW9EkWcrdD5nh3bul5tPtCKC4DiYL6aOp9SNu5SN1aPcZkQ1XRvquh77us67/uo5mPIpmP1V3MtbAMus8fwR0FSR89WnHHFVMUxhSnToiiloJf/0BXHhOYr9T10wbI3ooWn4KZNyESG19RjQlF+66A3qsY5rDuvQr1+5Hpnwm/fs3XaCziKQ5EkI7LEa81faJmejKmNrGwzoZJSB4IgK75qkuUGqZYClB+0SVTGRsM6vdC75VUT4jLQv8i1K+dn6NaguLj4TeRWRCbB5mTkdn3Ion91kvm8cQUhTGlkbZPUj3ZDtcONb3Q+SLyS2oPov1o//+Oi3xGkyj8zpkXayExyD8SMkBYWZiA2FvwZl6P13YWEmnt/CxTFMaURuLzYPoXXEiiZIC4++3NQTp/jHidaN9t9QfSNeMuqzGR1C4M6tDQc0TiEN0u5PqUq/c0STAfhTHl8dLvQ1PvgdwDrqx4dBuI772uB0V+eOTTMOJ7VLxVVWeS8tdA9E2IN30cJDfGjdgu6/xQ1dAsqutc3MMO+10QmwulFxie8CkgCSR15BgJO/6YojAMQCQFqSNQvxvK/4DyqxDd3B0MWzDWXp8+fuC1Fn6Pdp8P5X8F0VFFNHkYMv2idZ32jJZGIhujiQMh/yDD6zQBKPRciI+Hl55fccTvvSZIxPOoVBJRVydKpiOd10yq/BwzPRkGoH4P/qoz0Tf2RbtORFcchr9ivotoSuwPhBSCi2wzYGPWwjK066NQ/juQC6Kk8pC7C111IqoN2K6NlkBmfMU5m2uSgzUXooPycDR3L/RehitBPjTiKQLTv4LMfhAJNUu1Hk1RFCKyQESeEhFfROaGnHeoiPxNRJ4TkXMmUkZj6qBaQLuCMtDk1y3upb+iXcc7s1JNx2YCmX5+ME4Z7T6X6iGRBSg9C4Vfj8+XMMYckRTSdhqQCjsL8r8ceKdrvk3t0uEelF+elG11myXxk8DRwMO1ThCRCHAFcBiwE/BBEdlpYsQzphS5+6D0T6o2otEs9F+HdFwHMiNweEdwi0cC2s5DEvui+YfQN/aC8vO176P9rtueMXnwu0BC+s9oGYIwWdVi+L8/WSjUXPJamqb4KFT1r0C9zMZ5wHOq+kJw7o3AfOAv4y6gMaXQ7C1AjX7FqLNTz7gCmfOoe116EbxOSB6CeNOduWnVJ2gouapWX2SjNYluP5B0WRXxBkU3eQwUB6xJnV4WLUorO7M3A14e9P4VYI8a5xrG6Klbs8kHfJd5XaXbnfZ+g8YycNMQ33cUAhrNQqLboLEdgpal5aFHwZsFsd3cO4mg8b2g8GiN0aJQXIb/+u4Q3Q7J/CeSnBwhsuNmehKR+0XkySo/8+tf7Yao8llNVS0ip4rIUhFZunz58tEJbUxNEvsS7qzeFqliflBVfN+HwmON3UdiSOp9o5PRaBoy43LwZrtmVgOkQGYgHVdVWEak7dPU9mmUXSl7XQPFJ9Dus/B7vj6eoo8Z47ajUNWD1nOIV4AtBr3fHHg15H5XAlcCzJ07t04BH8NYh6SORfuuAq0WBplC2s6s+ETzj6K934Lin4NP6kUyeeB1Ih0/tPDYSYhENobZSyB7J5q7w/klkocgqfnDQlwlthN0XuuCGsqvB+HRfVRtfapBKZDUEUhsxwn7PqOhlU1PjwHbi8ibgH8CCwFrWG2MORKZCR3XoqtOwT319TGww5h2OpI8ZOBcv38x9FxAVcd3VaKQnI+0fx4JKwlhtDQiSUi/H0m/v/658d1h1r1Qfh4td8Gqj1LbNFlA+29E2i8eU3nHmqb85YrIUcDlwGzgThFZpqqHiMimwNWqeriqlkTk48C9uDCTa1X1qWbIa2z4SHxXmPMo5JagpWcQbyYkj0AiswfOUb8fes4jvLVqxaggbcj0/zYlMcUQEefk9vrQ0HIgvkvwbHGaFfW0GFhc5fNXgcMHvb8LuGsCRTOmMCIJSP177bIM/ddRX0mkcAoC8GYjHVciXttYimlMJiQFkgx2qdWIupIxLY495hhGo+Tuq39O5j+QyObuP39sl5brVGaAFv/kqv36b0D0rUj6WCQyZ1zuJeKhqYXQfz3VS4FEkHTrW9RNURhGo/jddU+R1FFIdMsJEMYYKaqK9pwL2btxi7YP+UfRvqvQ9kvxUu9xJVb85SDxMWsiJNP+Cy38xuXfDGRtCy5h85NIdNsxuc94YorCMBol8ibXY7smUVMSLYz2/zRQEoPzZoKghO5P4ZdOhexPXMVfymhka5h+Pl5i7/BxNQ+l50HiQSh15S5SvDTM/Blkf4723wB+D8R2RDIfReK7jeVXHDdMURhGg8i0D6GrHqNmBEvq+OqfjwD1u91ikl3swnXjuyOZU1zYpbF+9P2A2nWYCtB3ORUhrOXnYNVH8BMHITMudRWGB6FaRnu/Df2LcClpPkgb2nYeXurQinNFEpA+BkkfM4ZfaOKYfNWpDKNZxPeHxH4M74gXBW/rYfkWI0XLr6MrjoDe70H5JfD/Bbm70ZUL8bN3rtfYUx3VkpvPmvjUzOfN34+uPN7Vcho8Zs950P8jV5ZFe91v/3Xo/gx+dsOKwbEdhWE0iIjAjMucI7T/KtdvwpsOqYUQ3wddcwlaehGiWyDpE5DY2wau1dJzaHYJkEfi76hsjLT2nO4LXOOkilIRPpCD7nPRxL6I115TPtUCFJ4AshDdadwctM1A/W7I3Qv+Kld/KbHfCEOOI0CMxvNfhlB6DnJLIHWEk6f0D8jeSXUHdQ7WfBFNHjopK8VWwxSFYYwAEQ/JHAuZYwc+83svh1Un4RYhH4p/QLN3o+kTkLaz0NWfgvxDuNaZZbT/R64kROciJLIJAOqvCkqQD60nNIjs7ZA5oeohv/9mWPMlBp6KtYAm3oW0fxnxMuv/xZuI3/cjWPN1V4BPCy7cVFLQcXXDJjkRQROHQv52wov21SKH9l0LmgNvGlr6O6EZ+doHpadhAzEZmqIwjPVA87+Bvqup9FsEu4DsDWj5Rcg/Wnlc+6H8Ctp1Isy61+1Uyq+DxEK66eXQ8ktVczz87B3QczHDfCf5B122eecNkzZMV3O/gDWX4vqErP2wD7QP7foQzH4gdJe1Fr/cBYVfMTolEVB6Eu35nCs7rjnCc2q8GiVhJiemKAxjPXA1omo4SDUL+QeovjiVXRx/4TeQ2Bsic0DDMniTSGSLYZ+qKqz5CjWbJRWfguIfIb5L/S/Tgmjvt6gZPKAFtOerqPaC9kD8HUjqGCQyq/I0LcLKI0FX1bhLvdLgAyMB2QZPLUH0zQ2cODnYMAxohtEsSs/UOSFkVdEsFJ8AQLxOiO0cMk4Bje8z/OPySy7csiY5NN9AouAEon4P2n8j2ns5mr1toJWoqqKll9HS86gWUS3Xmd885G6G/N2utHfv99AVB6H53w457RdOKdeWaL2/UyVJSC+Y9Ca/wdiOwjDWB29GnUUo7Gk16uztgJZXQPHZkHEUVp+CzrpzSJhmGURC1joNb7wzwfj9N0PPRYG/IetKd/dchCaOgNytrHMOR12QQN2n/cF+Amee0tWnwexHBiq7uq6C9Sr8xoN7jcZclMKF3QYO88R+SNuG1bnZdhSGsT6kjmd4uOxakkBYWXEPEu8BQPuupHaXPQCF8sog0mYQka1AQ573JI0k3hky7sShhccCX0p+nblubWhp7mdULtIlyF4PUt//UOVOaPbWQW/DTHoBkS2QzushcQh4m4LMgejbIVKv/HcM2i+BzBnItE8gs27B6/iOa3K1AWE7CsNYDyR9NJq9yYVPVix0cYhuAelTg7LkQ+3sSUgehkS3dAto//XULziYRbOLkfQHAFDNod3nASEF57yNIe4yi9XvQvv/z3Vr82Yj6fdPaCKf9n6HxjoBDr5oFe5pfwRhrZqF0pPr3if2d76gmmOIS2qMvx2JX145VO5BtPvs2kX9IpshycMQObz68Q0E21EYxnogkkBm/gQyJ4FMx1WOnQaZDyOdP8NLz4f2r7kFmxRIxplb0ici7V/Czy5Bu06m4dLlg6KidNXHXWx/1ZDaKER3QDp/7ArT5R9C3zgAer8D+XtcRNbKhfjd5zuH+ERQXDa66xIHQmSLoBJrGy4fIiyKKwLezIF3kjqS2rs+IPY2SB1Z4977Bf921XYISaTtM5M2omwk2I7CMNYTkRTSdja0nY1qcZjZwUsdgiYPhvLzbqGPboNI0kXj9JxL40/ZCUjuD4AW/waF31PTpi4JZOZNiMTQ8r/QVZ+gaghv7nY0+m9I5oNVh1FVKD3rzEPRbRBvRoOyViNG7RIaIUgcmXV/IMdqiGyNrj4bio9R3X8RQ1JHrbvcmwYzf4p2nQTajZuzYHFPzne5JjUS40QiMPMGdNWZTtFJdN21becjyfVt5Dk5MEVhGGNILdv0QCObwRR+zYgibiSKpIIFPf9L6u5CSn+D2FtdMbxazlzNuhpIVRSF5h9Fu88H7QIiLhw1eTAy/fOji+hJHgLZWwhNKqxGfA83f7FB4abtF6Er5kO1pkCxuciQuZbY9jDnl1B4BIrPgNcOyYMbUnzidSIzf+yS7EpPu11hfA9E4iP7HpMYUxSGMc6oqitdjYA3a52pwl9F/WgcgDhIxjVBisx0vgZ/BeFKRlxvZ4DC44Ta+P1X8f+1K0Q3RdInQ2o+FJ9AV53OsN1Obgla/Avadg4S39mF9TaIZE5Hc3cP6iHdCDEkVaX9aOk5alrOi0vR0ktIdKvK+0vE+SsS+zcsc8X10a0huvWorp3smKIwjHHE7/859H4D/C5AIbIJtH3WmSyi2xG+YHqQej+SOAASB0D5ZfyVJwS2fo/wJ3OF2FuCYRoxF/VB6Vm052LI3+/qWNVK4iu/AKvPRPHR1BHI9M8Ne7pWVcgtRnt/AOWX3VN46v3QcRX0fNGZkSQemOJ2CJzPQ5WmB+3fhNLzaGQzV6577fi936V2KGsZ7VuEtF/QwPc2GsEUhWGME37fdbDmG1QsuOWX0NVno9M/h5c+EvU2d76LaotkdDu89i8CrgidrlzgfAV1n8ZTkDnZlbYGJL0ALTziQlHrkoX8I1Q16Qw9DyB7J+p3Ix3fGzjiGgT9N+TuGhQG2w39P4bcXcisW8HvA3+FixqKzEHLy10Wdu4XQXmMovvp/jhKHPDQ1JFB//FksKOoRRGKSxv4rkajWNSTYYwD6vcOVxID5GDN51EtuAXW68Qlba0lDV4nMmPQ4tt7WR2TTcxdRxzSC5HMGesOxd8J0Z0JjfwZKl9DJjGAPOQfQQcv3MU/QHaQklh3APwV6JpvIdEtkPiuAxVuJTIbmX4hRLfC+V4GK6qCkym7GO36iOtCFyjBmoj1KR9LTFEYxniQf9gVj6uJQuExJLolMus+aPssxPaA2J7Q9hlk1n1IdFBtp9w9hC7ekS2R9guROQ/jTT+3IopHxEM6r4bMh5wJiDqL7Fr5GqYM+Ydc2Q2/D+37KbUjuUqQvbVqSK72L4bi09T2p+SdM7nwKCTfS22DSBpJH1vjmDEammJ6EpEFwEXAjsA8Va26TxSRvwOuLyGUVHXuRMloGOuF9oLWeSrXXgDEyyCZ4yBzXNXT/Nwj1E04k2kVIaHDDkscafs0Ou0stPgX6PpA+Hgjwkf7bw52UEr9shsF3I5hSNRQdhF1w2e13yUdtn0Gzd3rigFWKNC4czgnD0G1gPbf6Exefpczc2VOgeR7p0Tuw1jSrB3Fk8DRwMMNnPsuVd3FlIQxqYi9Nfy4FiFarzwEaP4RWH1GnbPikNij9hiDnt5FoggFGjdDQf0diO8c3JQInunqjlc1tNTvakwcvxeJbIzMvCWIYIq5ZDxSzvnfeQOgaNdxro9F+SXQNVB6Gu0+H+3+fxOXZLiB0JQdhar+FTCtbmywSGwnNLqNM5UMi06KuV7Y0S1Dx3BO4Sp9JoYRQdKV/bq19Irza+TuBgpoZBtk2scgeQRENqVxH0QCMqe45L7iMobvbNbuHkay8Bbx+xfjpYfsgCJbBR3+wkhBYi935+jmSMcPnD9Ie8CbOeDA93uvdvkSw+Yu66rJFn7pIsmMhmh1H4UCS0TkcRE5NexEETlVRJaKyNLly5dPkHiGURvp+L5blGVQcpqkIbo1MuOb9Qcov+IaGoUSRTquGOiUB6Cll9CV8yF3Gy6EVKH8PNpzHrrm60hk02DH08iDmiCpo5DORZBagDMXpXC7jEZ8HdUoQe/XnFN68J0ypwQ7gzBxIkjq6MqPvGlIZNMBJQE4c1PNPhb9aN+iUcg9dRm3HYWI3A9sXOXQear68waH2UdVXxWROcB9IvK0qlY1V6nqlcCVAHPnzrV9pdF0JLIRzLoX8g+g+QeACJI8GOLvbKyXsuaCbmoh56QWIol9Ky/ruah6GK1moX8Rmj4Gaf9qEG67hlBTkTfd2fbFQ9ovRKedHmSFF9DItrDqFEZVmlv7nblqcAZ14kBIHgnZxQxf5KOuEm7HNQ11tKtrxiq/OlKJpzTjpihUdb2LoKjqq8HvN0RkMTCPxvwahtESiERdqYjkwSO/OLoloVpCMsgQ34T6PUENqFrXldHszXhtZ8Osu9D+RdB3FdWVRQqmnVUZQRWZA+kFwc3KqMQZVctPLazLHF87tghMvwiSh7u+4muzr6PbQeLdSOowl0PRCJE5LtGv5vGtah8zhtGypicRyYi4YGgRyQAH45zghjElEEmE9LsQZ9JKvLvyY7+b8Oe/0kCjJYnMxGs7C5nzCMR2c/eRdGAqS0LbmXjpKuUzBuSLQPpDNeSrR8kVRRw2piCJPfA6vos3ewne7HvwOr6Dlz6qcSUBkD4pRK4UkvnIKGSeujQrPPYo4HJgNnCniCxT1UNEZFPgalU9HNgIWBw4vKPAT1T1nmbIaxjNQtrOQsuvQP5BXEhpOShVnkE6r3c7lsFE5hBuq0pC9C2V9/A6kZk3uqS54p+Conf7NlT4T6Z9DC0+CYWlrGu8lMD5P+o44bO3QLxOdNgokfRCNP+gy9AenPgnKUgtQAKHuNEYsiGGic2dO1eXLrUUfmPDQYvPBAX1+pH4bs4UM1RJBPjd/xPY+auZhFLInIcbs/ODczj7r+F6PGxUNVJRVaHwWzT7f67QYXw3SB4Ktaq7riXxbrxBpT/GGtUy5O525rXycohuhWRObpmOf62GiDxeKw3Baj0ZxiRAYm9GBpfZDju37Rz3lF9+YVB9pxguQurbDSkJVXXlyfsud3WZUIhsDG3nIskDK+8nAom9Kp7SdcB/UUtRxCHa2PdZN2be1YLy/wWRzSHxrtCWoyIRSL0XSb13RPcxhmOKwjA2MMRLw8yfQf5+tP8m8Hsh8Q4kfYILjW0A7b0c+q6hIlO6/BK6+pNo+yV4qSPCZZAImjoW+m+g+s5GkPTChr+T5h5Auz8VvCm4yrNEoOO7SHxew+MYo8NMT4ZhVKB+F/rG/tTunteBzPm1e2IPG0dzaNeHoPgs6/wXESAG0y8ennBXa5ziX9CVC6nu80ghs26vm7xo1CfM9NSyUU+GYTSJ3AMQmudRaKj/tUgS6fwJ0v4FiL3DmZpSRyOzbmlYSUC93hNFtO/ahscyRoeZngzDqET7huU4VOI12NsiaA27vn6Cwu+oHclVgsKvRj+20RC2ozAMo5LY28JLpGt+WIjt+BJu4rLn3fHHFIVhGJXEdgVvM6ovD3EXbRSZPXHyJA+mtjJIBL0pjPHEFIVhGBWICNJ5jevvPVDQUFzWdmxHpP2SiZUncypUzcr2QFJI5vgqx4yxxPZshmEMQyKbwKz7goKGvwKiSPJQiM+b8PYAEt0cOm9AV38Kyv8EiQb9PLZFZnwL8TonVJ6piCkKwzCqsl4FDcdaltiOyOy70OKzAwl3En1Ts8WaMpiiMAxj0iCx7YHtmy3GlMN8FIZhGEYopigMwzCMUExRGIaRzKHuAAAEfElEQVRhGKGYojAMwzBC2SCLAorIcuClZssRwixgRbOFaBCTdXwwWccHk3X0bKWqVTMpN0hF0eqIyNJaVRpbDZN1fDBZxweTdXww05NhGIYRiikKwzAMIxRTFM3hymYLMAJM1vHBZB0fTNZxwHwUhmEYRii2ozAMwzBCMUVhGIZhhGKKYgIQkQUi8pSI+CJSMxxORP4uIn8WkWUisnQiZRwkQ6OyHioifxOR50TknImUcZAMnSJyn4g8G/zuqHFe0+a13jyJ47Lg+J9EZLeJlG+ILPVkPUBEuoN5XCYi/9MkOa8VkTdE5Mkax1tpTuvJ2hJzWhdVtZ9x/gF2BHYAHgLmhpz3d2BWq8uK6035PLANEAf+COzUBFm/CpwTvD4H+EorzWsj8wQcDtwNCLAn8Lsm/bs3IusBwB3NkG+IHPsBuwFP1jjeEnPaoKwtMaf1fmxHMQGo6l9V9W/NlqMRGpR1HvCcqr6gqgXgRmD++Es3jPnAj4LXPwKObIIMYTQyT/OBRer4LTBDRDaZaEFpnX/Tuqjqw0BXyCmtMqeNyDopMEXRWiiwREQeF5FTmy1MCJsBLw96/0rw2USzkaq+BhD8nlPjvGbNayPz1Cpz2agce4nIH0XkbhH5t4kRbcS0ypw2SsvPqTUuGiNE5H5g4yqHzlPVnzc4zD6q+qqIzAHuE5GngyeSMWUMZK3WC3Nc4qzDZB3BMBMyr1VoZJ4mbC7r0Igcf8DVA+oVkcOBW2nNLkKtMqeNMCnm1BTFGKGqB43BGK8Gv98QkcU4c8CYL2hjIOsrwBaD3m8OvLqeY1YlTFYReV1ENlHV1wLTwhs1xpiQea1CI/M0YXNZh7pyqGrPoNd3ich3RWSWqrZSYTtonTmty2SZUzM9tQgikhGRtrWvgYOBqpESLcBjwPYi8iYRiQMLgduaIMdtwInB6xOBYbuhJs9rI/N0G/DhIFJnT6B7rTltgqkrq4hsLCISvJ6HWz9WTrik9WmVOa3LpJnTZnvTp8IPcBTuKScPvA7cG3y+KXBX8HobXKTJH4GncGaglpQ1eH848AwuUqZZss4EfgE8G/zubLV5rTZPwGnAacFrAa4Ijv+ZkKi4FpD148Ec/hH4LbB3k+T8KfAaUAz+Vk9u4TmtJ2tLzGm9HyvhYRiGYYRipifDMAwjFFMUhmEYRiimKAzDMIxQTFEYhmEYoZiiMAzDMEIxRWEYY4yIlAdVA10mIltXOefEoOrtsyJy4vBRDKN1sPBYwxhjRKRXVaeFHO8ElgJzcaUlHgd2V9VVEySiYYwI21EYxsRzCHCfqnYFyuE+4NAmy2QYNbFaT4Yx9qREZFnw+kVVPWrI8clW3dSY4piiMIyxJ6uqu4Qcn0zVTQ3DTE+G0QQmTXVTwwBzZhvGmNOgM/txXItMcD0JdlfVSd8JzdgwMdOTYUwwqtolIp/HlfYG+JwpCaOVsR2FYRiGEYr5KAzDMIxQTFEYhmEYoZiiMAzDMEIxRWEYhmGEYorCMAzDCMUUhWEYhhGKKQrDMAwjlP8P4xsDTMER5QsAAAAASUVORK5CYII=\n"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 使用DBSCAN聚类算法时可以先对数据做标准化,使得数据为同一个量纲\n",
    "from sklearn.cluster import DBSCAN\n",
    "from sklearn.datasets import make_moons\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "\n",
    "X,y = make_moons(n_samples=200,noise = 0.05,random_state=0)\n",
    "# 将数据缩放为平均值为0，方差为1\n",
    "scaler = StandardScaler()\n",
    "scaler.fit(X)\n",
    "X_scaled = scaler.transform(X)\n",
    "\n",
    "dbscan = DBSCAN()\n",
    "clusters = dbscan.fit_predict(X_scaled)\n",
    "# 绘制簇分配\n",
    "plt.scatter(X_scaled[:,0],X_scaled[:,1],c=clusters,s=60)\n",
    "plt.xlabel(\"F 0\")\n",
    "plt.ylabel(\"F 1\")\n",
    "plt.show()"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-08-30T12:06:16.518746100Z",
     "start_time": "2023-08-30T12:06:13.788829500Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[-0.74222184 -1.12662975]\n",
      " [-0.31812104  0.81858831]\n",
      " [ 0.83679632 -0.71477576]\n",
      " [ 1.37449555  0.9833299 ]\n",
      " [-1.48061163  0.23565651]\n",
      " [-0.93912579 -1.06960381]]\n"
     ]
    },
    {
     "data": {
      "text/plain": "<Figure size 432x288 with 1 Axes>",
      "image/png": "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\n"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "X = []\n",
    "with open(filename,'r') as f:\n",
    "    for line in f.readlines():\n",
    "        data = [float(x) for x in line.split(',')]\n",
    "        X.append(data)\n",
    "\n",
    "X = np.array(X)\n",
    "# 把数据统一到同一个量纲\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "scaler2 = StandardScaler()\n",
    "scaler2.fit(X)\n",
    "X_scaled = scaler2.transform(X)\n",
    "print(X[:6])\n",
    "clusters2 = DBSCAN()\n",
    "c = clusters2.fit_predict(X_scaled)\n",
    "plt.scatter(X[:,0],X[:,1],c=c)\n",
    "plt.show()"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-08-30T12:18:09.102142800Z",
     "start_time": "2023-08-30T12:18:08.868131300Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 432x288 with 1 Axes>",
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAD4CAYAAADvsV2wAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOydd3hUVfrHP+fOnZZGAiR0CL333hQQERAVFeyo2F1dXde2uq6u+1vLWnat2JXFiiiroCBIR5pA6L0TCJCE9Eym3vP744aQydyBBCYFuJ/nyUPm3nPPOTNh3nvue973+wopJSYmJiYm5z9KdU/AxMTExKRqMA2+iYmJyQWCafBNTExMLhBMg29iYmJygWAafBMTE5MLBLW6J3Aq6tatK5OTk6t7GiYmJibnDGvXrs2UUiYanavRBj85OZk1a9ZU9zRMTExMzhmEEAfCnTNdOiYmJiYXCKbBNzExMblAMA2+iYmJyQWCafBNTExMLhBq9KatiYmJyfmILxBgU/oxrBYLHROTUISoknFNg29iYmJShSzav48/zfmZgCaRSOLsdj6+4mo6JCZV+timS8fExMSkijicn8cfZs0gz+Oh0OfF5fNxtKCAm6d/i8fvr/TxTYNvYmJiUkVM37aVgKaFHPdrGvP37a308U2Db2JiYlJFZLoK8RkY/ICUZLuLKn180+CbmJiYVBGDmzYjymo1PNevUeNKH980+CYmJiZVxNDkFnRMTMKpnoyXcapWrmrTnpa161T6+GcdpSOEaAJMAeoDGvChlPLNMm0E8CYwGnABt0spU852bBMTE5NzCYui8PnV45m2dTM/bt+KTVW5sWMXRrduUyXjRyIs0w88KqVMEULEAmuFEL9KKbeWajMKaF380xd4r/hfExMTkwsKm8XCzZ27cnPnrlU+9lm7dKSUR06s1qWU+cA2oFGZZlcBU6TOSiBeCNHgbMc2MTExMSk/EfXhCyGSge7AqjKnGgGppV4fIvSmcKKPe4QQa4QQazIyMiI5PRMTE5MLmogZfCFEDPA98CcpZV7Z0waXSKN+pJQfSil7SSl7JSYaavibmJiYmJwBETH4QggrurH/Uko53aDJIaBJqdeNgbRIjG1iYmJiUj4iEaUjgE+AbVLKf4dpNgN4UAjxDfpmba6U8sjZjm1iYmJSGfg1jQX79rD+6FEaxcVxRZt2xNnt1T2tsyYSUToDgQnAJiHE+uJjTwNNAaSU7wOz0EMyd6OHZU6MwLgmJlVKdm4hu/ZlULd2DC2a1q3u6ZhUEoVeL9d/9w0HcnMo9Plwqiov/7aYprXiOZSXS8PYOB7pN4ARLVtX91QrjJDS0JVeI+jVq5c0a9qaVDdSSt6dspjps9dhtVoIBDSaN6nLq3+9hvi4qOqenkmEeW35Uj5etxZvIBC2jVNV+ceQS7i2Q6cqnFn5EEKslVL2MjpnZtqamJyGOYu38sOcDXh9AQpdXtwePzv3pfP8f36u7qmZVAI/7th+SmMPUOT3869lS6nJC2YjTINvYnIapv60FrfHF3QsENBYv+0Q2bmuapqVSWVR3mIkuR43+V5vJc8mspgG38TkNOQXuA2PWxRBoctTxbMxqWzGdeiI3WI5bTubRSU6jBBaTcU0+CYmp2FArxaoltCvitNho0FSrWqYkUllck+P3nStV58o1YpVUbBbQmNbnKrKnd17YlHOLRNqljg0MTkNt13bn0UrdlFQ6MbrC6AoAqtq4cn7R2AxuBGYnNvYVZWvr72e1WmH2XjsKA1iYsl2F/Gflcso9PmwKgp3dO/JQ337V/dUK4wZpWNiUg5y84v44Zf1rN50gEb14hl/eU9aJZuZ4BcSmpTkedzE2OyoNXhlf6ooHdPgm5iYmJxHmGGZJiYmJiamD9/ExOTCYlP6MfZlZ9G6Tl3a172w3HKmwTcxqSS8Pj85eUUkxEVhtZ4+zM+kcsn3eLj9x+/ZnpmBIgQBKelRvyEfXzkWh3puhVeeKabBNzGJMJom+WTqMqbOXIuUEotF4dZr+3Hz2N6Icib1mESefyxZwJaM9KAs2rVHDvPa8t945qKh5e6nwOst1tSJJc7uqIypVhqmwTcxiTBf/G8VU2cGZ+dOnraCmCgbYy/rVo0zu3CRUjJz544QyQRPIMC0rVvKZfCllLyyfCmT16/Dqih4tQDXtOvAP4YOr9FRO6U5N2ZpYnKOIKXk6x9Xh0gxuD0+pnxfthCcSVWhSYlf0wzPeQP+cvXx2foUpmxYhyfgp8DnxRsI8MOObby+4rczms/aI4f5dc9uMl1VJ89hrvBNTCJIQJMUFBrLLWTlFlbxbExOYFEUetRvyNojh4NK7SlCMKhpcrn6+ChlDUX+4JuD2+/n843reWLAYIQQFPl8+DTtlNr5B3NzmPC/78gqciGEwBcIcE/P3jzSb+AZvLOKYa7wTUwiiGpRaFDPWG6heRNTQ786+eew4cTY7CU6OQ5VJc5u528XDSnX9TnuIsPjbr+ftIJ8Jv44nW4fvEOvjyYx5uspbMtID2krpeTOGf/jcH4ehT4fBV4vnkCAj1PWMn/fnjN+b+UlUiUOPxVCpAshNoc5P0QIkSuEWF/882wkxjUxqYk8NHEodlvww7PdpvLH24ZUz4RMAGhTpy7zbp3IH3r3ZWSr1jzcpz/zJ9xB01rx5bq+c1J9w+PNasVz+w/fs+zgfnyahl/T2JqRwfXfT+V4GXfNrqzjpOXnoZVJeC3y+5iyYd2ZvbEKECmXzmTgHWDKKdoslVKOidB4JibVTnZuIR98+RtLVu3CarVw+bBO3DauP4N6t+KVp6/h42+WkZqWRYumdbnrxkF0adeouqdc7XgDAdYdSUMCPRo0xFYOVcozJaBpfLY+hckbUijwehnYpBlPDhzMH/ucmQbOXy8awk3fT8UTCKBJiUDX3bm+Y2fe/n0F/jJG3B/QmLZ1M/f16lNyrMDrDSu4lus2VmWNJBEx+FLKJUKI5Ej0ZWJyLuD2+LjriS/JzC4gENA3A7+ZsZbNO9J46/nr6dm5KT07N63mWdYslqUe4IFZM0tWt4oQvDVyDClHDjNlw3oKfF661WvAcxcPpWNSvbMe7+kFv/LTzu0lfvc5e3axPPUAc2+ZSGJ0dIX761qvPtOvv5l3fl/B5vR0WtWuzYN9+rMjMyNkxQ7gDvjZk50VdKxjYpJh0RSHxcKo1m0rPKeKUpWbtv2FEBuANOAxKeUWo0ZCiHuAewCaNjW/MCY1k3lLt5ObX1Ri7EFPtNq0/TALl+9g6IDK//KeS2QVubhn5o8U+YOjl+6cMR1VUfAUh0uuOXKY67+fyk83TiA5PuGMxztakM+MHdtK+gU9MqbI72fyhhQeHzD4jPptW6cub4+6IuiYGia3wqla6V6/QdAxu6ryz2GX8tT8ufgCAQJS4lRVGsXGcUvnrmc0p4pQVZu2KUAzKWVX4G3gh3ANpZQfSil7SSl7JSZeWGnPJsZommT/oeMcTc+t7qmUsHlnWkjoJYDPr/H3N37m3x/NO+fK31Ums3btRBL6eQSkDDLKAB6/n49Szk40cefx44buIm8gQMqRtFNeK6VkX042+3Kyy/U37JhUj54NGgUVTVEVhXiHg7HtOoS0v6pte74bfyPjO3RiaHJznh50MT/ecAvRNls53tnZUSUrfCllXqnfZwkhJgkh6kopM6tifJNzl9UbDvB/b82iqMhLQEqaNUzghSeuomG98m20VRZNG9XGblPxeENjuAMBjVkLt9CnW3MG9W5ZDbOreeR6PKetE3uCgJRsTj92VuM1jo3D7Q/921iEoGVC7bDXbUk/xgOzZpLu0kNok6KjeXfUFSUuJiklO7OOk+t20ympHlHFFa8+umIs765exbdbN+ENBLi0RSseGzCo5HxZOiQm8eIlI87qPZ4JVWLwhRD1gWNSSimE6IP+ZHG8KsY2OXc5kp7LU//6H27PyS/unoOZ/PHZqXw76e4qLz6Sk+di0udLWLxiJ6BvCobD7fExc95G0+AXM7BJUyatXhkSx26ERYizEjWTUvLsonn4DP4+NouFO7r3DDqW4Spk3ZE0nFYrD876iXzvyTyKg7m5jJ/2Davuuo88r4c7f5xOal4uqqLg1zT+OngIN3Xuil1V+XP/gfy5f+XH0p8NETH4QoivgSFAXSHEIeA5wAogpXwfGAfcL4TwA0XADdJ83jU5DTN+3Yg/EPyl1TRJfqGHlM2p9O7arMrm4vMFuPeprziWkVcyJ9WiYFUt+PzGK1evr3wZnBcCXevVZ3iLVszftweXT3eFRalW4h0Ojhe5gtw6NouFe3r2PuOxFh/Yx/JDqYbnxnfoTIviFb6UktdX/MYn69ZitVjwBgKGTyHugJ/H5s5mb042+3OyCZQyXS8sXUTbunXp2eDciMCKVJTOjac5/w562KaJSbk5lpmH3x+6SpNScjy7IGLj5OUXsXjVLlxFXvp0SzZMkFry+y6ycgqDbkD+gIbTYUUA3jJG32G3MvLijhGb47mOEIL/XDaaX3bv4ruterrOuA4dGda8Jf9ZsYyvNm/A5fPRMakez188rMQonwlfbtoY9tzy1AMlv8/bu4fP1q/DEwiE7COUZcH+fdgUJcjYg550NXn9ugvL4JuYVAa9OjdjyardIZujgYCkU9uGERlj1bp9/PXVHwFBIKDx4Ve/ceWlXXho4tAgZcs9BzIpchts0voCDB/cnoXLd6BpGj6/fhPo3K4RlwxqF5E5ni8oQjC6dRtGt24TdPypwRfz1OCL0aREiYCaqP0Usf2lN3L/u2FdSNRQOBQBiiKgzH1BoruEzhVMg29SY7lkUDu+/OF3jqTn4vXp3zSHXWXogLY0bnDmIXsn8Hh8PPPajKA9AoCZ8zYxsFdLenU56TJq0iAep8MaYvRtNpXBfVpx1/UDmL14K3n5RfTt3pw+XZN1A2FSbiJh7AF6NWzErN07Dc+VdhXlesqf6CQAXyD0adNhURne/NzZpzENvkmNxW5T+fDlm5k6cy3zl23H4bByzchujBrSKSL9r9l00NDIuD0+Zi/aEmTwhw5oy3tfLMHj9aNpxYlDiiA22s7Ani1QVQsTx59ZBueFSK7bzdebN7LqcCrJ8Qnc1rX7WcXdnyAtP49Xly81PHdR02SuaHPyqWtkq9bszjp+WneOw2Lhhk5daBATyxurlpdsPDssKvViYrihU5eznndVYRp8kxpNdJSdO64fwB3XDzht27z8IgKaRkKt8mVRnjDcRgTKrOYcdisfvHQz/3pvLus2HwQh6NO1GU/efxmqalazqgjphQVc8fUX5Hs8uAN+lqUe5Nstm/j4iqvp3+Tski2nbd1sKIPsVFVu6dI1yE13W9cefLVpI0cK8kPan2gVZbVyW9cePNJvABZFoUNSEpPXryOryMWlLVpxc+euaFIjvbCAxKjoGl/gxjT4Juc8R9Nzef7Nn9m+W4/dbtwgnmcfvpzWzZNOeV3Pzk0NQyudDiuXXRSaMNMgqRZvPDceny+AEJiG/gz5z8rlZBe5SrRn/MWCY0/Om8Pi2+86K6OZXlhgGI4JhOjOx9hsTOjSjddW/BYijSCB27t255mLhgY9BbZKqMPV7TrQOSkJp9XGg7N/YuWhgwghqB8Tw6uXjqR3w8ZnPP/KxjT4JtWGpkl27D1KQJO0a1kf9Qzi6v0Bjfuf+Zrj2YUlK/Z9qcd58NmpTJt0F3GxzrDXRjltPP3gKF54ezaaJvEHAthtKhf1bU2/Hs3DXmfWpz07FuzbGyI0BvrmZ3phIfViYs6474FNmvHjju0loZ8nkBJ6NwyNpGmZUBunqlJYpr1TVWlVu06Jsdc0jeu++4aUo0dK2lgVBU2TBIoziA/m5nL7D9OZc8ttNI4zlsiubkyDb1ItbN11hKde/gGX24sQAtWi8Pyfr6hwbP3KlH0UFnpC3DN+f4A5i7cyfkzPMFfqDBvQlo5tGjDvt+0UujwM6NmSjm0a1PhH83OZGJvNMLJFkxJnmMzU8nJpi1a0TFjNrqzjJZm2TtXKgMaNmbxhHbluNyNatmJkqzaoisLQ5i2oZXdQ5PeXrPIFYLeoQf7+h375OcjYA4ZPEn4twBcbN/CXQRed1fuoLEyDb1LluIq8PPL8NAqLvEHHn/rX/5j67t3USSi/kuGxjNyQ5CwAj9fPoaM55eqjXt04bh7b5/QNTSLCrV2788qyJUFZt1ZFYUCTZqesFFUerBYLU8ddzxcbN/Djjm04VJXm8Qn8tEuvZ6tJyYL9e/li0wY+HzsOq8XCtPE38vivv/B72iGklLRPTOLfI0YRW2ouc/bsKtf4Pk1jX072Wb2HysSseGVS5SxZtctQTlbTJHOXbq1QX21b1Ucx0Bc/EQtvUvOY0KUbl7dui91iIcZqw6laaVunLq+PGBmR/h2qlbt69GLmjRP45MprmLlzB+5SK3iXz8fmY8f4eZceutkgNpbJY6/l+o6dAdicfozLvpjMNd98SX5x6GbZhKtwOFWVfo1rrg/fNPgmVU5egdtwVe71BcjNMy4jF46OrRvQsU2DoApTVtVCrVgn+1OP89m3y9l70NToq0koQvDKpSOZN+EOXhsxkm/HXc+PN9xCbWdUxMdanXYIq8HekMvv46ed20te/2PxAr7atKHEsEtgffpRun3wLruOZxJnO/2Th6ooxNntjGsfmbDhysA0+JWM9CxHOz4O7VgPtMyrkJ5F1T2laqd7xyZYDHzkToe1wkVDhBC8+tdrmHBNX+onxlG3dgxtW9UjK9fFlOkr+WzaCu5+8gv++92KSE3fJEI0iotjRMvWdEyqV2l7JlGqFQNVZgSUuGxcPh/fbNlk1AwJTPjhO54fMsyw/4ubNqdZrXgSo6K5rkMnZtw4IcgVVNMwffiViPQsRWY/ABRn9Pm3IbMfQtZ6FcV5WbXOrTpp3TyJi/q1DpJNcNitdGrbkJ6dT79pK6XE7fHhsFsRQmCzqtw+vj+3j+/PwbQsJj46BW8p2WKP18+U71cxdEBbmjY8c40Wk8olu6iIFYcOYldVBjVphl1VySgsZNXhVGJtdgY0aYq1giURezdqjF1VKfAF7xc5VJWbOusJU8ddLkMX4wkyCgvp1agxH44Zy98Xzye9sJBadgePDxjEdcVuoPIipcTt92NX1YhlFlcE0+BXIjL/X5QY+xLcUPAyXMAGH+CZP45mfo/t/DR/E/6AxqghHRl5cYdTyhFIKZn+yzo+nbqCgkI3sTEO7rphIGMv61bSZunvu0OSpkCXMl76+25zc7aGENA00gsLiXc4cFqtfL5hHS/+thhVsSCEvgIf1aoNP+zYhlWxIACbauHzseNon3jq/IrSqIrC5Kuu4dYfvscX0AMofVqAB3v3K4mXrxcTw6lMrxACTZMMb9GS4S3KL6OwLSOd1WmHSYyOZlhyCxbu38s/lyziWGEBDlXlju49eahP/7A1bisD0+BXJv69xscDh5EygBAXbjy3ogguHdyeSwe3L/c1P87dwHufLynRvsnJK+Kd/y7CalW5fJjuN7UoiqF7QCCq9It1KqSUrN10kM0706gbH8PQAW2Ijqq5boBIM23LJl76bQnugB8pJUOLjWFZ1cpvi1U1SySLfXD7j9NZfsc9Ffpbdkyqx8o772XFoVTyPR5ibDa+2LSeIf/9hE6JSfyxb38mduvBx+vWGl6fFBVN47i4co8X0DT+NOdn5u/bi5T6TUcR4Cklv1zo8/Fxyho8/kCVhnCaBr8yUZJAMyinJhLOe2MvpWTPgUwKXR7atqyHw17x+GopJT/O3ci3P60hv9BDYZEHrzdY98Tt8fPJ1GUlBv/ifq354EtjLZWBPVuwafthrKqFNi3qVYu4mdfn59H/+47te47pbimblXf+u4i3nr+ONi3OvnB3TSTf42FbZgZ1nE4O5uXy98ULgkIyf927u9xRMC6fj5SjaRXOZrVaLFzULJmlB/Zz788/4vH7kcChvFwW7t/LV9dez9aMDJYfOhh0nUUIPrhibIX2GL7btoUF+/aW5AF4wkj1FPn9fL5xHX/q1x+Henb5B+XFNPiVScwDkPdP9JovJ3BCzH3VNaMq4fDRHB5/cTrpmflYLIJAQPLIncO4/JKK+Tvf/HQBP83fFKJmWZbMrJPa+HExDoy+m1Jq3PWXL5BSv5HERNt55alrTiu/EGm+n7WOrbuOlpRGLCrew/jb6zP55p07z7uErw/W/s4bK1dgtegVogQipOpVeY09gBDg8pZP0tiIZxfNDyp9eKKw+YtLFzF13A3syMzgleVLSS8sZEizZO7o3osEZ/hsbSO+3rShXJW9TnC8qIhGsVVj8CPyjCuE+FQIkS6E2BzmvBBCvCWE2C2E2CiE6BGJcWs6wjkOYh8FUQuwgoiFmAcQUbdX99QqDSklj/xjGqlp2bg9PgpdXtweH//+ZD7bdx8tdz/ZuS5m/LrxtMYeoHH9k/VtFy7fafi47w9ICl1eXEVeitw+Mo4X8PDfv8Xj9ZNf6MZjUJC8Mpi1cLNhHdzMrAIOlzNR7Fxh4f69vLVqBZ6AnwKvF7ffX279+XD4NY1eBhIJ5cHj95Oal2t4buMxXYepbd1EPrnyGh7rP4hZu3fR86NJdP/gHSatXnXKjd3ShNPyMUIRColRwYmGbr+PvApIN1eESK3wJ6NXtJoS5vwooHXxT1/gveJ/z2uEEIjoW5FRN4PMBxF73rtytuw6Qnaui7IVLL3eAN/PXsdf/ziqXP3sOZCB1Wop0cEPh92m8odbLy55nZlTgLucK0CP18/1D3xMTq4LBAzo0YK/PDCSuBjHyf6yCljy+y4CAcmg3i1pkFR5GiknNgfXbjrArv0ZNKofXyK9fC7y6bq15V7pWoSCzaJQ5PejCIFVUagbFU22uwiXz4ciBDaLhecvHka0zXZG87FaLDhUNURnByDBcfJv/vvhQ9w/a0bJk0Cux8O7q1dS6PXy+MDBpx1nbNv27MvJNiyiXhqnqvJgn74lRVly3EX8Zd5cFu7fiwSS4+N5ZfhIutVvUIF3eWoiVeJwiRAi+RRNrgKmFNexXSmEiBdCNJBSHjnFNecNQlhAxJ++4XlAXn6RoW9cSsnxnPJXBqqfGGdY3lAIiHba8fkDNKofz323DGZAz5ORE13aNsJhDy1UYoTH68dTyh20ImUvj/7fd3z0r1sAfTX+2ge/IoRASsl7ny/mnpsGccOVZ15vdfTQTnz8zbKQVX5i7Rji45zc9eTnpKZl4/UFsNssxEQ5eP+lm0iqE3vGY1YXx8uoU4bDqao8OfAiGsTEMmvXDqJsNq7r0IkOiUnM2bOLX/fuJt7h5IZOXc6quLkiBLd07saUjeuCjLFTVYMKo7yxcnmIsS7y+/lsQwp/7NvvtP72CV27MWv3TnZlHcfl82G3WLAIhScGDmbGjm1szcwgMSqaB3r3ZXwHfe9JSsltP3zP9syMkieE3VlZ3PK/acy55XYaxZZ/0/hUVJUPvxFQuqrwoeJjIQZfCHEPcA9A06Znp41tUvV0bNMQn8Gq3G5XGdSr/CFtjRsk0LFNAzZtTwsqEm6zqbz7zxto2cz4i9+9UxPat6rPlp1HSoyqquqqhqfSvwfw+TX2pR5nx95j2KwWXnl/bshN56Ovl9G/RwuaNa5T7vdSmnGje7AiZS/bdh/F4/Fjt6tYFIX/e+xKPv5mGftSj5d8fq4iDbfHz0vv/MJ/nht/RuNVJ0Obt2BvTnZIYXCnqtK3URM2pR+jQUwMD/Tpx2UtWwNwactWQW3HtGnHmDaRKxX52IBB5Hs9TN+2BavFgl/TuK1rD27r2r2kzd7sLOOLpS6xfDolTIdqZdr4G1mwbw8rDqVSLzqGa9t3JDE6mltLjVOazRnp7M7KCnEH+QIaX25czxMDIxPJU1UG32gnyvDbJ6X8EPgQoFevXuXfzTGpEdSKdXLbuH58Pv33kqQqu02lfmIco4dVLOX8xSfG8vKkX1i2Zi9CQHxcFE/cPyKssQfdLfL6M+OY/ss6fl6gbymNGtKRpb/vZtP2w8b/6UphUQRf/7iahSt2Gsbz+wMBFizfwcTrjAuy7NqXzr5Dx2naMIF2LeuHnLdaLbz59+tYtzmVTTvSqJMQzbABbYly2pj7/LaQm6WmSVK2pOLx+LCfQaRTdXJX915M37aVHHcRnkAAgZ7w9NzFwyqcsBQpVEXhhWGX8uTAwaTl59MkrlaIi6h1nTqkG6h5ugN+juTnl0v6WFUURrRszYjiG9npSM3NNcw+92kBdmeFuQGdAVVl8A8BTUq9bgwYxCuanA/cNq4/7Vs1YNqsFPLz3VzcrzVXjeha4dDMmGg7/3z8KlxFXlxuL3Xiy1dRaF9qJqpq4c7rB9C/ZwtsVpVxo3tw6c1vGmr4lMbj9YdN3gJdV93onNvj4/EXprN115FibX2N6CgbT943gqED2ga1FULQo3NTepSRkQi7KSjlaW9UNZEEp5PZN9/KlA3rWbR/L/VjYrmje88z3nSNJHF2B3F2h+G5P/cbyMpDqYbRQ0/Nn8u8W+84Zd9uv4/sIjd1o6LKnRncPjHRcLPXYVHpGcHPq6oM/gzgQSHEN+ibtbkXiv/+fEZKSWpaNooiaFQ/PsgY9+mWTJ9uyREZJ8ppI8p5+o06f0Dj2ddn8Pv6/WgSVIuCzaoy6Z830LRRbTq0acDGbYfDXm+3qUQ7bWTlhvc9W1ULQ/q3DTn+/hdL2LIzLWiTuaDQw3P/+Ym9qZmMuaQzi1bsxOsLMLBXS1o0rRvSx7ABbfh5weYgN5IQgo5tG55RHkNNIN7h5KG+/Xmob9XW+81xF/Hzrp3kuIvo26gJPRs0LHfIa/cGDYm128lxh0bKHMrPI8NVGBJZA3oE0cu/LearTRtB6JLPf+4/kNu6nj4osXl8AsOa6wloJ/YPLEIQbbNxQwSfhiJi8IUQXwNDgLpCiEPAc4AVQEr5PjALGA3sBlzAxEiMa1J9bN11hGdfn0lOnm4c69aO4Z+PXUWr5DPfVDtbZvy6gd/X7y8J5fQCRW4vT7/yI1+8OZEHbxvCQ89NxeP1c2LxpgiB3a4SG+3g6su6smjlrrAG36pauP6KnobvcdbCLYYRRZom+e93K/nif78Xv9aYPG0F4y/vwRVuLDAAACAASURBVH23BPtl771pMCmbUsnMLqDI7cPhsOKwqTz9QGRkgy8Ufj98iDtmTEeTEq/fj0O1MrBpUyaNvrLcGbqxNmODL6XEphiv2l9b/htfb96IO6D//3MDryxbSh1nVLn2Id64bDQfpazhy00bcPl8DE1uzuMDBlPLYfwkciZEKkrnxtOcl8ADkRjLpPrJyy/iT89Pw1WqgMmhIzk89NxUpn94b0RXo8cy83hn8iJWpOzDZrUwqHdL+nRrTqvkRJLLbJz+MGdDSNy+lHAkPZe0Yzl0aN2A9164iU+mLmPnvnSaNEhg4vj+dOt40tuoScm+1MwQ462qCpNeuJH2rUL98gA+X/gQPH3D+GR/gYCf735OYUi/NrQr1V9crJPP37idJb/vZte+dBrVj+eSgW1xOs4sDPF851BeLl9s3MDB3Bz6N27CNe074lBV/vDzjKDQS5ffx28HD/Ljjm1c075jufq+qVMX3vx9RVC0jkUIejZoZGiAfYEAn29cFxKGWuT38/bvK0sMviZlWNE0q8XCH3r35Q+9Ky9i3cy0Nakwv/623bD4t88fYMmqXYwwKAB+JhQUerjriS/IzStCK1bInLVwC78s3opVtdClfSNeenIsDrsVTdPdS0YIQYmbpHXzJF7+y9UEAhr5hW5iooO/vNeO6sGshVvIzCrA4/UjBNisKn++e3hYYw/Qs0szVqbsK/d78/j8zPttW5DBB70w+rABbRk2INRtdD6iSUmOu4hYm71CSpirDqVyx4zp+DUNn6ax+MA+PkxZwwvDhuMJhN58i/w+pm3dXG6Df0f3nqw5ksay1AMIBIqAulHR/Oey0YbtC7xe/GGiwI4W5LN4/z7+b8lC9uZkE2e3c3ePXtzfq2+VK2aaBt+kwhzPLsRjkAHr9QXIzC5/rP3pmLVwM64ib8hmpqZJPF4/G7YeYtKUxfz57uGs3rA/JNnrBDarSpOGCSWvv5+dwsdfL8ft9WFVLdx0VW9uvroPK1P2kZqWxf0TLuLIsVxWpOylbu0Yxo3uQZvmSUz/ZR2zFmxBCLh8WCfGXNK5JCnqkTsv4Y7tUyh0eUPGF4QJSbvAmb5tCy/+tpgCrxeLENzatTuP9R90WreLlJJH584OWk0X+f2kFxbw3dYt5R4/q8jFxylrWLh/H3Wjorirey8uTtaL11stFj66YizbMzPYlH6MRrFx9GvcJKyBruVwUMtuJ7Mo1B3YtFZ8UCJXnsfDpNWrKPB6eTJC4ZblxTT4JhWmc7uGOB2hyU1W1ULntg0jNs623UcMZQhO4PUFmLVwC3++ezh7DmaGjXLp16N5yYbd7IVbghQ3fb4An09fxdSZawgENLy+ADarhXqJcUx64UZiox3FchHfsXnH4ZLr9qVm8tuaPbz69DUIoW9afzvpbv794TwWrtyJRREoikLd2jGkZ+bhKxPPb7OqDB9UfqXQ8435e/fwt4Xzgoz2lA3r0DTJU4MvPsWVkJafT5Y7tDKaT9NIOZKGXVUpNMim3Xk8k2MFBdSLiSG7qIjLv5pCttuNNxBgx3FIOZLGn/oO4O5SSVjt6ibSrhzJXooQ/PWiITw1f25IUpcihGEi1383rOPhvlUnnAZmxSuTM6Bvt+a0apYYVFbQYVfp2r4RnSJo8Js3qYvNdurHfK/Xz/7UTBYs226YWOWwq/QqVVTls2nLQ/z8up6OB5fbhz+g4XL7SD2SzaT/LgZg5vxNpGw+GHSd2+Nnw5ZDbNx+MuqnVqyT5x+9gl+/fJg3n7+eD1++mW/euZMn778Mm9WCzWrRI4dsKteP6RnizjkX0KRk8voUBn/2EV3ff5t7f/ohfKLSKXhz1XJDf/cXm9bjOY0kgUNVw97co6xW3rv8SlSDp4Rct5unF8wF4LP1KSXGvvT4/1m1nAJv6FNaafyaxvtrfmfApx/Q7YN3+OPsnzicl8dVbdszafSVdK1XnzrOKC5qmsw3424gvbDAsB9FCNILI/dEXB7MFf55gJQSZBEIZ5WoLSqK4I2/X8f3s9fxy6ItKIpgzCWdGTuia0THv2J4ZyZPC1+aUAho16o+9z71FS536JdUUQROh41hA0/6w0sra54Kv19j/vIdXHdFT/790TzDm4nH52fjtsN0bR8s1Wu3qXQpVUB95JCO9OjclEUrduLz62GZZTeczxWeX7yA77ZuLjHW8/buYeWhVGbffBsNK5D+fyg/z/C4RHd5JKrhTVOdqCi61WvA2iOHg2LlnarKhK7d6d2wMU5VJb+M4daApQcO4AsEWHxgX0gGMOihlNsy008pv/zY3NnM3bu7ZNU+e9dOlqceYO4tExmS3JwhxW6hE7Stk8gxA8MuJdSLjgk7TmVgrvDPYaSUaIWfIdP7INN7IjP6o7mmVsnYdpvKTVf1Zsp/bmfy67cxbnSPiIt8LVq5K6x4mkVRiHLYqJcYh9vrw2jB17ltQz546aagqKGKGFqpSSZPWxE2CctmtZBQq3yFt5PqxHLdmJ7cPLbPOWvsj7tcfLtlU9DKXAJuv5+PU4yLh4SjY5iqVXaLpVxyxG+Nupzk+ASirVairVbsFgsjW7Xhpk5dSuZlhERPYqsfY6xNVOjzcSQ/P+y4h/JymbNnV7DEMhKXz8eXmzYYXvNIvwE4ytzAnKrK3T16YT/Fja0yMA3+OYb0bUfL/iNaxnBkxuWQ/2+QuUAAtCzIfxHN9WN1T/OsKXJ7efuzhWHPJ9WN5cu37iA1LYtAIPTrHe20cf+tF9OwXrBo3QO3DQlyRQGGG3EWi8JFfVuxdddRw5sJ6ElRQ/u3Kce7OT/Yk52FzRJqoHyaRsrRiiXOPzZgsKERfKz/IEN3TFmSomOYe8vtfHbVtbx4yQh+ufl2Xh8xqmTD97KWrUL6UYSgT6PG2CwW7uzeE6eBsdWk5Kn5c5m6eZPhuNszM0rULUvjCQRYe8T4M+havwGfXXkNHROTUBWFpKhoHh8wmIerOBkNzjOXjpQaeJcg3UtASUA4r0aoFauMU5OR3g3IrFvRUzrCpeEXQeFbEHVVVU4t4mzbfRRFUQDjFX6r5ETq1o6hWaPa7DmQGRKh4/MHqF831MXQs3NTXnvmWj74cin7U4/TsF4trh3VnQ+++o0it66V73RYiY9z0qtrM5au3h12ji/9ZewFVZqwUVwcXoOQR4sQtEqoWHH4rvXq89U11/HKsiVszcigXkwMD/ftz+jW5Q9HFUKElWl4atDFrE47zHGXi0KfjyirFadq5eVL9FrSfRo15m8XDeW5RfNDJA2K/H7+uXQhY9u1D1mBN6kVj98gJFmXc3by6vKluP1+LmvZmt4NG5W4OPs2bsLMGyeU+71VFueNwZfSj8y+G3zrQLoAK7LwI2St11Gcl1b39CKCzH+B4OpZYQiUv9BITSU6ym5YuQp03/yVl+qP7jeP7cOyNXuCNlRtNpX+3ZtTt7axf7R7xya8/+JNQceGD2rHghU7OXDoOK2Sk8gvcPP6h/MMC7BYVQuXDm4XtBlshKZJvSD3eVLFqlFsHAObNGNZ6oGg2rM2i4W7evSqcH/d6jfgq2uvj+QUS6jtjGLuLROZu2cX2zIyaJ6QwOWt2+K0nnTv3dCpC5+tT2FX1vGQ64UQ7Mw6Tuek4LKTbevUpUNiEpvSj4XsAczatRO/pqFJyTebNzGqVWtevXRkjfr7nzcGH/dP4E3hpEH06T95TyAdKxHiPFiJ+baWr52aXKnTqAraNE+idq1o0jw5IS6VIX1b06+7vjHWpkU9Xnj8Kl7/aB7pmfkoimDE4PY8cuewkvaFLg9CCKyqhVXr95GTV0T3jk1oVKpSlt1uZdQQPSknENAYM/FdQ2OvCP1m8+BtQwA9rHPOkq38unQbToeVqy7tSp2EaF7/aB5bdx3BZlUZNaQjD94+5JzVwynN26PG8Oyi+czcuR1NShrFxvHPYcPLFbpY1dgsltPKKydFRxsafF9ACyqKUppPrryGvy6Yy9w9e5BIGsfFcTgvL+gmWOT38cvuXVzTviMDmtQcmXcRLlmlJtCrVy+5Zs2acrXVsiaCd1noCRGDiH8XYa96f1mk0dIHgpZxmlYORMJbCPuQqphSpZKals0j/5hGbn4RmiYJBDTGj+nBA7cOCWkrpSS/0IPDrmKz6uuYg2lZvPDWbHbsPVbiALMWbyxrUjJ6aEcevXt4yAos43g+Nzz4iWEOQFysg1mTHwR0sbaHn/uWHXuPBUlBBwJakCqnzWqhW8cm/Ptv4872I6kxePx+PAE/sTZ7jVrBVpRF+/fxwKwZQRvRqqLQtV59po0/pWJM8WcQ0HMKFs0zrKR1Y6cuvDCsaj0MQoi1UkrDR67zZ4UfdgUvQZz7KysAou+E/DcJdutYQcTovns1GRH7OMJ++jJs5wJNGibw7aS72bwzjbz8Iho3iOeHORu49t4PiHLaGDe6B1cM74KiCIQQQaUJXUVe7nv6K/IL3EFPCKUjbn5ZtJWenZsytIz6ZVxs+CiR+okntdCXrd7Nzn0njT1geJPw+gJs2HqIg4ezaNqoYr7umopdVas8wqQyGJLcnIf7DuCNVcuxKgo+TaNtnbq8d/np98BOfAZWi2JY8ENBYDfY5K5OatZszgLhvA7pXVnsvy+NHazGVWbONUTU7chAJrg+B6GC9IPzGkTc3xDivPlTBqEogi7tGlFQ6GHCI5+Rnesq0cV5e/Iitu85ypP3XxZy3fxl2/F6A2EjbEDXsP9hzoYQg38sM49eXZqyesOBoLBQh11l4viTT4rL1u4tVylF0MXXDqZlnzcG/3zinp69ualzV7ZmpFM3KooWFdyAHpLcwjARzKZauKZ9ZHSlIsX5YyXsQ8F5Lbi+BQQICyAQCR+cN4XDhVAQcU8gY/4AgTSwNEAo516t0zPhp/mbyMt3B2nFuz0+5izeym3j+lM/MTgi5/DRnKCVdzhKawK5irw89a8f2LwjDVVV8Ac0FEWgWhQcdiv3T7iIwX1OluCLj3VisQjDsNCy+HwazZucm/H3FwIxNht9Gp1ZRF+Mzca7o6/kgVkzUIRAkxJNSh7q059OZTZ9q5vzxuALIRBxf0NGTQDvChC1wDEUIYwfz6X0IV3Twf0/wIqIuh4coxGi5qcmCCUGlAsn/hsgZfNBQ3eJVbWwY++xEIPfrmV9Q72f0tjtKpcOPrmh9/pH89i4/TA+XwBPcZKm3aYy/vIe3HXjIFRL8P+NMcM78/3sdQQMQhVLY7NZ6NO1WdAmscn5xZDk5qy48z4W7NuD2+/nombJFco8rioiYt2EECOFEDuEELuFEH8xOD9ECJErhFhf/PNsJMY1nIuajIi6EeEcfQpjryGz7oCCF8GXAr5VyNy/InOfqqxpnRw7cBjp24WUxvHlIe01F1rBO2gZI9Eyr0Qr/LLc155PNKofj8US6inVpCSpTmj45aDeLUmqE1uySVsWp8NKy6aJjBmuh3f6fAEWLNsRUlPW4/Xzy+KtIcYeoGnD2vz1wZE4HVainTaiHFbqJETzwuNX0rtLM6yqQky0nXGjevCPR684k7dtcg4RZ7cztl0HbujUpUYae4jACl/o/pJ3gUvRa9euFkLMkFKWjSFcKqUcc7bjRQTvUvBv0jc6SygC92yk7w6ENfJa5DKQhsx+APy7i91NDoh/+ZTRNFL6kFk3gn8v4NEP5r+C9K5EJLwd8TnWZK4Z2Z2Z8zYGraYtFkGDpFqGxcJV1cL7L93Ex18vY/6y7ShCMKhPK6KjbOQXeOjTLZmL+rYuMeQ+fwDNIKEGCCr0UpZhA9sxsFdLNu88gt2m0qF1AxRFcHG/C+sJzOTcIBIunT7AbinlXoDiurVXAeUMGq96pGe5weYugAbe36ECBl9KCb6NoB0DaxeEpT7SfxD828DSBGHtUPxEcSsEDuljSAAXMvthqPsDQm1u3LlnHgQOUGLsASgCz2KkbxvCeuHI6zZpmMBLT17Ni+/MJq/AjaZJOrdryN8fGRMSFph2LIcf5mwg7VgOPTo15dtJd5+2Jm6U00aThrXZfyg4JlsIQa8up46jttut9Oxcc2KtTUzCEQmD3whILfX6EHqh8rL0F0JsANKAx6SUhpUKhBD3APcANG1aSV8ipS5gQ696WnpwKygJRlcYIgPpyKzbQDsCKCA9SEsDCBwrDgUNIC2tIeZB0I6j6/WVxod0fY2Ie9q4f8+qMDcm9IziC8jgA/Tu2ozpH97L0Yy8YvmDUOGylE0HeeKl6fgDGn6/xsp1+/jqx9V88uoEap0i3BLgyftH8Mg/vsPn9xMISKyqBYdd5Q8TTq3PbmJyrhAJH75RCGrZsIUUoJmUsivwNvBDuM6klB9KKXtJKXslJlZO9p5wXlnsVimLgtTykIWfIMuR1SpzHobAft0oywLAB4GDgEd/LYv0lX7hOxh/TH4IHDY4XoylIWCQXyAsoBirDZ7vCKG7ccoa+8zsAqbPXsfTr/yI2+MvieZxe/xkZhfw+fcrT9t353aNmPz6rVx1aVe6d2zCDVf25Is376Bxg/IvAkxMajKRWOEfApqUet0YfRVfgpQyr9Tvs4QQk4QQdaWUmREYv8IISz2In4TM+RPgR78/2XUDnf8KEh9gQTpHIeJeNswklIF08G0inLjXSXzFkghGBt8JtoHh5+m8GlnwTtmjIJxgN1edJ5i7ZCsvvzcXpDSUU/b7NRat3MWDtw89bV+NGyTw57uHV8Y0TUyqnUis8FcDrYUQzYUQNuAGYEbpBkKI+qLYagoh+hSPGypgUYUI+0BE0gpEwmeQ8F+QGroKpQtdh8cN7jngmWvcgSwEKhDf77gKKO1SsIElCeEcG/YSWfgpIW4gpS6i9peI8yV7+CzJznXx8qQ5eL3+sNr5oEflmJhc6Jz1Cl9K6RdCPAjMQbeAn0optwgh7is+/z4wDrhfCOFH1wW4QdYAER8hVLB1A+9qpPCHOqKkC+n6HuEIzeTE0gyUKNDKoV5paYao9QLY+yJdn4NWAI5RiOiJCMW4gIb0bQLXl4TsM2h5+grfBIBla/acUkYZ9AzZa0edH9nWJiZnQ0QSr6SUs4BZZY69X+r3d4Cyvomag9QwdrlAOEMihAK1XkZmP4RulAPo/nYfYEWPrFFB2BC1XkQIgbR2ArU1+Hbom7haDijG8brS/Qshxh4ABTyLIOqGirzD8xaj0oMnUC16IfGh/dty5aVdq3BWJiY1k/Mm0/assHXH0OCLKITz6rCXCfvFyLi/QsHboOXq4ZwxfwHfal2qWW2BiLoFoTZGetfrET0nbg7+bUj3DKj9FcJqpLdhCTOnE+dMAAb0asEbn8wPOW6zWrh9fH8uGdjulBmuWTmFzF+2A1eRl77dks/JwuImVceR/HxyPW5aJtTGalD5qqZz3sgjny3SsxSZ82Dxat8DIgpsAxDxb4fV4tFcUyHvRU6qV1r0m0SdH0MqbWmZY8FvEPlj7YVS56vQ+fh2Io+PQ99XKI0dkbQYoZwUeJKBI+A/CGpzhOXCi975Yc563p68iEBALz5hVS1cO6o7f7j11Bvby9fu4W+vzQQJvkAAm9XC0AFtueO6ARxJzyW5cR1qx0dX0bswqckcd7l4YNZMNhw7gqooWITCP4ZewpVt26NJyeID+1i0fx8JDifjOnSkcVyt03daSZxKHtk0+KWQgQxw/4TUchH2gWDtFVbrW0ovMr1fcThmaSxgH45wjglOvDrWHuOyhFaU+oYpCWgFH0HBW8WvhH59rZdQnGNOziHnUd3FI2wgPeC4HFHrhfNWPTMch4/mMH/Zdvx+jcF9W9E6+dQ3Po/Hx5g7JoVo7SiK0BW1FQFSMuLiDvzl/suwGEgrmFw4XD31S7ZkpAeVN3SoKp9fPZ43Vy4n5WgaLp8Pq6JgURTeuGw0I1q2rpa5Xhh6+BFAWBIhemKQI0VqLmTRt+CeB0odRPQtCFtvCKQSmkgFEADPHKR3GSWJVwkfg3CUkXI4MWgUUgZCniKkbwdCqYWM+wfIfISw6TcSS92TbfJf0Y09Ht3YA7hnIbVciBoP9sH6dRcAjerHc+u1/U7brqDQg6IINmw9ZFi8vGRPoFgBc/bCLSTWjuGem86PGgMmFWdP1nF2HM8MqWXr8fv555KF7DyeWVJAxadp+DSNR+fOZs3dzWtczYCaNZsahtQKkcev1aWIcQMC6VmIjH0cbD3DZ8HCyZW/fxvkPQPOG8D1FcEyCYDMR6b3Q8b8GSX6Rr02b87D4FmKHnOvgIiHOl8GG3spi6Wgy/SHB7wLkL7fARvUnoKwmrouew5k8MLbs9l7UE/9aN60rqGGuRFTZ641Df4FTHphIVbFgptgVVQJ7M3OCqqWdQIhBClH0uhfg8obgmnwT4ksmlbK2IP+J3ZD/qtgaVnOXnzgWQi1/g2E+up1bZ1cKHgZqcQhtfRiY+8+OaQsQuY8gqgztdR1AUKNfenJ6zccmX0vJC44p8vQnS25+UX84ZlvKHSd/Lz2HMigvO5MI1lmkwuHjklJeA0ksO0WC3WcUeR7Q6PppKRGbuqajslT4f6V0E1TdGmDwI4KdKRB7mOc2kAXIQveBtc3BmNq4NuCDJzMVRNCBTV8ceaT/WaDf3sF5nr+MXvRFvz+4PBaTZPYrCpWVcFuU7Eo4W+I4SSWTS4M4uwO7u/VF2cp94xVUajlcPBQ3/5EqaFJfQ5VpXv9BlU5zXJhrvBPhRKmQpEMULF7ZRSQf/pm2lHdfWOIALz6Rm3+v6Ho2+I9gRPzMJb2BQEyvLzvhUBqWnbYVfrdNw3GYVcpdHlZtGIHO/amh7QZM7xzZU/RpIbzUN/+tKlTl0/XrSGrqIihzVtwb88+1HE6WX/0CFO3bEYIsAiBIhQ+vmIsFqXmradNg38KRPQEpGcRwStuBSz1QfOCTAtzpRU9AUtPvEJEg1YOg6+21evvur4gJOnKUg+U+sic+8GzjOCnBRWURNAyCU0Us4BhnH/FyclzoWnynAtV7Ni6AXOXbA2JyBFC0LV9Yzq20VdiV43oygPPfM2Bw1lICUJA905NeKgcGjwm5z8jW7VmZKvQyJu/D7mE27r1YHnqQeLtDi5p0QKHwaq/JmAa/DDIQJpeJjHmESj4d7HcsQZKEiLhE6R/F+TcZ3yxUluXLrboiVcy685yjOhAxD4GalukZwFo6cWbwjYQKqLWa7oSZ4ixB1DAMVqv3uXfVXydFbAgar161ro7acdyeP6Nn9m59xggaNwgnmf/dPlpQx9rCpcMbMtn05bj8wXwB/QnIZtVpX2r+nRofTLRKi7GwZT/3M6OPcc4fCyHls0SSW5s1qE1OT3N4xNoHl/zVVXNOPwyyMBRZPaD4N9RLKFsg7hnEUoCKPGgdtBlEvx7kZljMfTxW5qgJM7XNwW9K5G5L4C203hAEQ1qO0TsYwhbT30O0qOHV3p/12P5neMQliSkeyEy91GD2H/0JLGEj8EzD+lZCkoiwnktQm0S2rYC+HwBxt//IVm5riAZg5goO9++dzdxMY6z6r+qyMlz8eFXv7F45S6sqsLlwzpz67h+2G3mmsfk/MKMwy8nUkpk1kRd455ASWUqcp+GOt8jrKUe5yzNdBEzWdbgW8F+id5X9sPgnQcY+Y8toHZBqTs16KiUGmBFOK8OlXVQm4M0KsptBWsHfSPXMRLhGFmxN34KlqfsxeX2hmjW+AMBfl2ylWtH94jYWJVJfFwUT9w3gifuG1HdUzExqTZq3q5CFSKlT181u6Yh/fuKSxUeIdQP7kW6vgg6IoRFV8DEwcmP0Q5KAiL6XvAuBu+vGBt7FRyXIWp/rMf6a/nIQAZa9gPIY52QxzqiZd2DDBwNHlNNBltfQoqiCBsiasIZfgqn5lhGHj5/6Iaw2+Pn8LHcShnTxMSkcrhgV/jSvxuZNUFfoUsN0PRkKsN7oGZYmUo4hkOdb5Gu/4L/MNgHIKJuRCi10PK+J6xkr3UwIvZpZM5D4F11ojd9nBPXeJfoWjqJ8xHipIEXCe8g81+Fou/0uVt7IOKeQ1gqJwSsXav6qIqCr8x7cTqsdGrbsFLGNDExqRwuSIOvu1vuBy2LIH0bbwrGK3IH2AcZ9iWs7RC1XjIY5BRZuNohZNbNxUXNw+m4a7qv3j0HnFeeHE84EHF/g7i/IaWs9ISqzm0b0q5VfbbuOlIS2mi1WqhXN46L+rSq1LFNTEwiS0RcOkKIkUKIHUKI3UKIvxicF0KIt4rPbxRCVK/jN7AHAumEipm5QdQmtI6sBNsw/TfvBrTc59Fyn0F6loXP1nReE358S5MwIZRlh3Uh/XuDD/n3oOX9Cy33SfDMRcrKzQIVQvDaM9dyy9V9aZAUR2KdGMaP7sEHL92EaiYkmZicU5z1Cl/oql/vApei17ddLYSYIaUsrQU8Cmhd/NMXeK/43+pBenSNGiNbLeJBlo2Z98DxUWhRNxdnwnoBDemeCfaRUCu07q1wjEbmPo7hE4OlPnhPVwsXQIA3Benfi1BboBXNhNy/FvfpR7rngNoBak+uVJE0u01l4nX9mXhd/0obw8TEpPKJxAq/D7BbSrlXSukFvgGuKtPmKmCK1FkJxAshqi/vWG2LHqdeFodujI1CLfGB67/F54o3MWURuH8B39rQ5v4txbH7ZRHF+wHlccVI8K1EZl6B5l6gi7DhpuQmIl3g2wJFM8vRV/UjpWT+su089NxU7nv6K6bPXofXZ+rUmJhUFZEw+I2A1FKvDxUfq2ibKkMIFRH/OnpR8RNGOQrUViA0jJf+hDnuRrrnhR7WjmNcmUrqTxi2bpT/AcsHOU+CNPpzFelPGucAr33wKy+9O4eUzals3pHGpM8X89Cz35YkQ5mYmFQukTD4RkvVspaxPG30hkLcI4RYI4RYk5GRcdaTC4ewD0YkzoLoe8A5Xq87W2dq8eq/IliMi4pbuxjE6J+4JBmR8KEuh1BuCgirlyNqvtTBwbQsflm8FbfnZB6B2+Nnz8EMVsLFQgAAIABJREFUlq3eXY0zMzG5cIiEwT8ElE7nbAyUFZkpTxsApJQfSil7SSl7JSZWxCBWHGFphBL7MEqtFxDO0QhhRUTfgvHKXIQ5bkGUiqIpaa0khDfEvlV6qKVSwVRsoxuLcCKirq9YP9XAhq2HMAooKnL7WLV+f5XPx8TkQiQSBn810FoI0VzoO4c3ADPKtJkB3FocrdMPyJVSHonA2BFHWBpBwqcER+oooHaC+Dd0oyui0RUw7RD3DEJtHtKP9O/Wde6NCOxHC2SC/VKM9xIMUDsjan+qbyqLGL3mLnZwTkDYL6rQe6wOasU6UQzUA62q5ZwTYzMxOVc56ygdKaVfCPEgMAd9CfyplHKLEOK+4vPvA7OA0cBuwAVMPNtxKxPF3h9ZbyPSuwL8qQhrO7B20TV0bIPAuwSkH+yD9JW8AdL17SlGkJBxwkiXI7RRJCBqv68XLk/6DTy/6TcTW79KS7iKNP16NDfUlVcUweXDOlXDjExMLjxM8bRKQst5BNw/l6OlBd03X/bvoICSDDETwTHecHV8rrHnQAZPvDidvAI3QggURfDsw6MZ0LO81cNMTExOhymeVg0I+1CkezbhC5Oc4EQ8vlKqrQARg6j7HUKJqbQ5VjUtmyXy3fv3sHt/Bh6fn3Yt6pnJWyYmVYhp8COMlAFdElkGgGjKVemKaD3+P3BQf6m21nXszyNjfwIhBK2bnxs6+iYm5xumwY8g0r8PmXVrKb16D3p0z+ncZj5E7ckgHIAWdl/AxMTE5GwwDX6E0AXZ7tMrVQUZeAU9EsfLSbdN6ZuAE5xjEJZ64fv270YWvKvLN1uSETH3I2yGLjoTExOTsJgGP1L4d0Pg/9s77/Coqq0Pv/tMTS8QSEJv0qt0UGkq4hXsXbFfr+3asTcUEVHAjvWzXysCCoig9N5b6IROEtLblHPO/v6YEBhmJoVJIznv88yTyTln9l6zM1mzz9pr/9YxfGfzuqdwiaU7KOFg7Q+Fv3gybZQICL0VEXprwGalOwmZcUPRJi4dtIPIjNXIqLdRQoZV5jsyMDCoZRgOv8IoDCzIhhUl6pWTvwaQWvaHzJ3gR2rZAbljkfahlS6PXNM5UHCQFEcKTUKbEG9viC51FHH2ZzTVNQ7vPsreTQdIaNmA1t1897UYVAyGw68ozO3xv4/N7ikwfqa4N/o/rh8HmeMptF4HKdQKeWvHZPYXHECRApd0I4RAkxpxtvrc2OR6esR2r24zDUpBdauMu2kKK39fi9lqRlN1WnZuyrjZzxJubMircIypUAUhhAUR9QaekodF36MiFMzNEWE3nnnDSr0AJ0xFu23rJl8mf82+/GRcuguHdKKjo0lPimua8zgf7v2YrdnbSmnFIBiWTV/NY4Nf5J4uj/HFc9+Tk1GWjDRvfpgwnVV/rMPlcFOQU4izwMmu9fuYfO/USrDYwJjhVwDSvd2jTY+A6CmesoV6ikfywH5pubXqpV6AzP8UHNNBz8fzZzpVRtgOodcg/MovVx+a1DhQcBCLMNMopFGlhZtUXWV1xlrUEoq/uHQXvxyaRseoDpViQ13n61d+4scJ03EUOAE4tOsI875ZxMcbJxIWVfaZ+cwP5+IsdHkdU10qS39bjcvpxmqrWZ/xsx3D4QeJnvsO5H+KJwtHABYIfwAl0qfwF1I9ANpeMLVEmJv6bU9KzVP+UN2NJ60TPLtxBR45ZxVCLkVEjKmMt3PGbMrazEd7PkGTGhJJlCWSh895iEYhFV/3VkdHl6VLKqc4Uiq8bwPIycjlf+On4XKcVD51O1Wy0nL4fepfXPfk5WVuqzC30O9xqeuoLtVw+BWM4fCDQLp3FTn7U2WQNch7F2kfXuzUpXR6CpY7l3mKokg30jYQET3Fd/bvXAjaPk46+6I2CYGoFxG2IQilauL2Lt3FluxtuHUXHSM7EG7xvxHsuPM47+7+AJd+cqaW6kzj9aQJTO42EbNSsR8zq2KlcWgjDhQcLPG6xEr4sjGAnWv2YrFZvBw+gKvQxarZ6/06/PycAmZ/Op+1f22iYbM4Rj0wnNT9aTgK/EuIN23fmNAIP+qwBkFhOPxgcM4D3H5OSHDOB7NHI07mTvQ4e5ye4icAziXI3LcRp90JSPeGAAXQ3Qg9vcqc/facHUze+U5x0pEmNW5oeh1DGw72uXZx2lJ06Vuy0a272Zy9he4x3Srcvjta3MbrSRPQpIrqp2+rYuHqJiXUFTY4Y2IaRqGpvmMuFEFcY981p5yMXP5z7pNkp+XgLHChmBTmfb0QoQh0zTetzWw18+gn91aK7XUdY9E2KEz4H8LTtPMLf8J7xo7n90JfRU1hSsQTujn9hA2U+DO2tDw4NSeTdr5Doe7AUfRwSzffH/iBQwWHfK7PdGf6dboSnWx3TqXY2CKsOa93fpXh8RfTJbIz3aO6EW2JxiRMNAlpzMNtHqJtxDmV0nddp2WXZiS0bIhi8v7sW+0WrvjvpT7X/zhhOplHs3AWeO4AdU3HWejCkX/6/4SHJm0Tade7TcUbbmDM8IPCPhzy3g1w7iLAswMX6T9O6fe4/VLInXjaOQHYwH5hUOaWlY3Zm/we16TGkuPLuL7ptV7HO0V1ZEX6Kpy69z+wLiXtKtHp1rPFck2TqyqtfQP/CCF4fc5zvHjFBPZtPoDZbEIoggffv4u2PX2VT5dOX43bVfbaxRExRjpmZWE4/CAQ5qbIiKcgdzwnqzhKiHwRYfLMxoUQSEt3cK/zbcDSw7dNJQJiv0FmPXqKmForRPQkT5WsKsCluZB+dpDp6BRqvjHXHtHdSQyZw+HCI8VxfJtio09sb+JDynZXsit3N98f+IEDBQeJsERwWcKlDG5wQZ3fWFZTqZcQw3srXufovhTyMvNp3qkJFqv/BdawqADpw35kpuxhNkbeN7xijS0Dx5JT+f2juRzaeZQuF3Tg4tsHExZZ+9KeDT38CkBqxzwxewTYhiFM3mqQHnmEG0G68MT8LSCsiNj/ISyBa+hK7Rig+LRX2WS6Mnl841M+aY82xcYDrf9Dl+jOPq9x6S7+TlnAivSVWEwWhsQNom+9PmVy2PvykxmX9IbXoq9VsXJpwiVc3si3fKTB2cXf3y1m0r+neoVwFJNCi85NyTiahbPQidQlqqox/PbBPPjeXVX6Rb9lSRJPX/IaqltFdWnYQq1ExITzwZo3iGkYXWV2VBQl6eEH5fCFELHAD0BzIBm4VkqZ6ee6ZDw6wRqgBjLmdM4Wh18WpHYEmf8VuLeBpQMibHSNrlb1+5FZTD8yE7fuRiKxKTY6RXXkgdb/qXDpgrd2TGZT9maf4zbFxns9pmBVjNS8sxkpJVOf+IoZ7/+JxWZG13QaNo9j/J/PE9MgirV/bSIrNZtOA9uR2Kpq1qlOtW10mwc5utc7hddkMTHirqE89P7dVWpPRVCZDn8CkCGlHC+EeAqIkVL6JIgXOfyeUsrj5Wm/Njn8s5E9eXtZnLYUl+6kd2wvukR3rhSdmofXP06m22eegE2xMbbTSzS0G/r5tYH0o5nsXLOH2IQYzjm3ZY0I16UfzeSWVvfjdvhm28UmxPDD4Y+rwargqMyKV6OAQUXPvwQWADVrR5DBGdMqvCWtwltWej/x9oZ+Hb5EJ9pSN7WCaiP1EmLod1nNkvW22i1I3f+k1x5WNWtmVUmw07WGUsqjAEU/A03FJDBXCLFWCHFPSQ0KIe4RQqwRQqxJS0sL0jyD8uLW3WzI3Mjy9JXkVFJK5elc3mgkVsV7A5pVsTI4bhA2U+37p6urZKZm89oNkxgRciMjQm7ktRsmkZmaXa02RcSE0/WCDpgs3qU2baFWRt53cTVZVXmUGtIRQswD/AXWngW+lFJGn3JtppTSp1yTECJRSnlECNEA+At4UEq5qDTjjJBO1bInby8Td0wqli3QpMaVjS9nRELlZ01syNrIN/u/57jzODbFxsXxF3J5o5FVInWsS52tOds4VphCYkgC7SPbGRLLFYzqVrm93X9JO5hevGnLZDYR16QeX2yfgtlSfQmDmanZPDnsZVKS0xBCoLpVBlzRhzFfPYDJdPbVXA4qpCOlDFhlQwiRIoRIkFIeFUIkAKkB2jhS9DNVCDEN6A2U6vANqg5VV3lrxyQKNO9dvtMOT6dtxDmVHtrpFt2VbtFdcetuzMJcZfHdXHcu45LeIMOVgSo1zMJEnC2OZ9qPIdRc+9LyqovlM9aQfTzHa4eupmpkH89h+Yw1nHdV32qzLaZBFB9vfIuklbtI3Z9Gm3Nb0qh1zU2oCIZgpzEzgNFFz0cD00+/QAgRJoSIOPEcuAjYEmS/BhXMtpwkNHwFydy6mwVpVffdbFEsVbqY99X+b0lxpOLQnahSxaE7Oeo4yvcHfXdBG5w5B5IO48jz3VnryHOyf5vv7u2qRghBh77nMOi6AbXW2UPwDn88cKEQYhdwYdHvCCEShRCziq5pCCwRQmwEVgF/SCnnBNmvQQXj1J1+q3VJJA4twE7hEshX81mXuZ6t2duKdeprGlJK1mauQ8PbPlVqrExfVU1WVR9SSmZ/Pp+bW97HiJAbub/3GDYu3FohbTdpl4g93Hc9xh5mo0m7RhXSh0HpBBU4k1KmA0P9HD8CjCh6vhfoGkw/NQmPVEImiLAq2/laFbSPbOfXMdsUG71je5WrrXkpf/O/Az9iFiYkYFHMPNb2EVqENa8YYysIiQwos1wW+eXaxi+TfufLF34o1rjfuWYvz44Yx/i5z9NpQLug2u43sieRsRG4Ct1eMfyIeuH0H1WzMndqM8bKVDmQzoXItEHI1POQKeeiZ41BBtLJOcsIN4dzfZNrsCpWlKKPhU2x0SaiNefG+EpABGJffjI/HPwJt3QXi6/lqnlM3PE2ql52PZXykuXKYl7K3/x57C9SHH6XknxQhEKnqI4IvENICgpdo7tUhpk1FtWt8vUrPxU7+xM4C1188dz3QbdvsVp4Z/lr9B/VE7PFhNliov+onry7fJyPJIOUkkU/L+eR85/nnq6P8dXLP5KfnR+0DQaGlk6Zke6tyMwH8dK+d8xCylxEzAfVZldFMix+KG0iWrMwbTGFWiE9Y8+le3Q3r4yVQwWHWZWxGoCesefSNLSJVxtzj83DrXtXMAJQdY2knO10ju5U4XYvPb6cL/Z9CXhm7T8d/IWRif9iZKN/lfra0c1v4eWtr+LSXTh1JzbFRogphJua3VDhdtZkstJy0Nz+Q2/JW0quOxAIt8vNr5P/YPZn81HdGoOu689jn91XrHMfaK3mkzFfM/PDucVSDId3HeXvbxfz4fo3CQmzn5EtBh4Mh19GZN7H+JU4di5GaseKxdLONo4WHmNh2iJy3Ll0j+lKj5ju3Nr8Zr/X/n5kFr8dnlEU+pHMPvYnl8RfzJWNPQUvNmVtZnn6Cn9LAQAU6hV/N5TjzuGLfV/ilt47JWce/YNuMV19vpBOJ85Wn4ldx7MifRWHCg/RNLQpfWJ71bn8/6j6EQjFvwNu1Kb8n20pJS+MmsDmRduKSxj+OnkWK35fx4dr3wgotJZ+NJPf3p2D23ny7+lyuDl+JIO5Xy5gVDUIq9UmjJBOWdH24XdVU1hAO1bl5lQEK9NX8cLWl/nz2F8sTV/GJ3s/5/WkCX5DLymOVH47PAO3dHtKDCJx6S5mHZ3DoYLDqLrKB3um+lXZBE9Of7uI4OLA/liftRHFz0xR1d2sSF9ZpjbsJjuDGpzPzc1u5Py4gXXO2YMn5HLlI//CFur93m2hVka/fF2529u5Zg9bliR51at1O92k7k9j2W+rA75u+8pdWGy+81BngYvVs9eX2w4DbwyHX1YsPfB7QyTdYG5R5eYEi1Nz8tm+/8Olu9CL0jGdupP9BQdYmr7c5/r1WRv8OnNNaqzLWs/uvD0E2sQnEFzZ+HIiLREV+yYAGWBxVUJAewz8M/qla7nxmSsIiwpFKIKGzeJ44N07adm1ebnbSlq5C13z/dsU5jnYvCQp4OtiGkYFlDqwhlj9HjcoO4bDLyMi/G4Qdjh1gU+EQOjNVVZ2sCLZk78XBd+ZsUt3+Z0ZmzD5LG6CJw5rQsEkAu9IbBHWotJ263aL7orux7FbFEu5s4vqOoqicOMzVzEt4//4aP2bRNQL553/fMJNze7l3u5PsH9b2WP5DZrU95ErAI/Tjm8RWAyvfd9zCIv2v+Ft/fzNfksrGpQdw+GXEWFqhKj3M9iGgYgCUzMIfxoR8WR1m+aXFEcq23KSyHHn+j1vFZaAsXab4hvSODe2u99rFRR6xvakVXhLLH5kjG2KjREJladJEm2N5qZm12MRFkzChIKCVbEwrOEQWoQ3r7R+azPOQhdPDH2ZPeuTcbtU3E6VvZuSeeSCFyjMK9s6TO8R3QmNCEE5bV3AbDZx4S0XBHydEIJzzvWtmgWe0oibFwe+OzAoHWPRthwIc0tEzPvVbUaJFGqFvLvrfXbm7sasmFF1N4MaDOKmptd7ZUW0DG+J3WTHoXtXsLIpNgY3GOTTbqw1llub38xXyd94qngVzaqvb3ptsXzxw20e4M0dk5BIVF1FIokwh+PWVVRdxaxUzsdtcINBdIjswOqMNahSpUdM91IXaw0Cs+TXlbgdbq+QmJTgdrhZ+NMKht/uW8geIHnrQQ5uP0zT9o1o1qEJkxaN5bUbJrF3036EEDRoWp+nvvkvUfUjS+zfXyjoBIHq4BqUDcPh1zI+2/t/7MjdhSpV3Jon02Fh2iIS7QkMaTio+DpFKDzW9mHe2D6x2DnrUmdYwyF0ifKfOnl+3EC6RHViXdYGpJR0j+lKrDW2+HzriNZM7j6Rb/d/z9Ljy9HROe5K5/N9/8e8lPk8035MhTt9Xepsz91BqiOVDpHtaRHWvEborJ+tHNp5hCW/rvTJxwePs0074FvSwlHg5IVR49m2fCcmswnVrdH5vPa8PO0J3ls5nsyULFS3Rv1GsWX62wy6bgAb/tni49xVt0bn89uf+ZszMBx+bcKpOVmftcGnNKFLd/Fnylwvhw/QNLQJU7q9xZbsreRp+bSPaEc9WywlEW2NZoifO4BTWX58ZfFCMIBbutmbv4+FqYsYGj+kXO/pdKSUrMxYxbyUv8lX88lx53qqcgmJwLNe8FjbR4wqWeVESsnbd3/E398tRkr8LpyGhNs5p5dvuOXjx79iy5IdXqmUmxZt49Onv+P+ybeXu0zgBdf2Y/Zn89mxejeOfCeKScFiNXP/O3fUyjqzVYnh8GsRp4dnTiVfLfB73KyY6RZTccoXO3N3+c3mkUi+OfA9vx+bTc+YcxnV6F+Em8PL3f43+79n8fElHu0f7w4Aj8Tz9MMzuKbJVWdifp3ln++XsOCHpbj8VH4CT6GQxm0T6TW8m8+5uV8u8HL24An/zP3iH+6ffHupfWccy2T+t4vJSs2m25DOnHthF96Y+zzLpq9mybSVRMZGcMldQ2nZpdmZvTmDYgyHX4uINEcSaYkkw5XhdVwg6BhZNbfCdpPdR4zsBDo6Ga4M5qXMZ13mOsZ1HlumnHdNasw+Ooe5KfPJdpdcMMMt3SxKW2I4/HIy86O5/uPjAmLjYxh++2Cuf/oKFMU7z0NKicvp/0vi1Bz8QKybv5kXRr2B1HVcDjczPpxL+96tGTf7Wc67qm+1yibXRowsnVqEEII7mo/GqliLUyjNwkyoKZSrm1xZ6f0fLDhEqqP0KmUnYvtzjv3le07qbM3exrLjK0hzetr6dO/nTD/ye6nO/gSnh7QMSieQcw4JtzN2xhhuf/UGv7IGQgiPsJo4/Th0HdSxxD41VeO16yfhLHAW31k48hwkrdjFn1/8c2ZvxKBEjBl+LaNzdCee7/AMc47O5ZjjGG0jzuHi+AuJtpYvjloe3Lqbd3e9T1LODhShIBABd9yeyqyjsxmZeGnxQl6KI5Xx2ydQoBYCEk3q9IzpwZrMdT7SCYEwYaJHjP8UUoPADLlhIAe2HfJx/BarhVYlbLwqzCukMM/htQldCEFoZAj3v3MH2cdzUN0a9RJ8CuGxa91eVJfvl7OjwMlfXy3k0nsuPOP3Y+Afw+HXQpqGNuGeVndWWX8zj/zBtpztHqd86j9+KY7fLd0cKDhAszBPbHbKrvfIdGV5vWZ15lq/G778YVOshJrCuNYI55Sby/5zEQt+WMqBpMMU5jkwW82YzApPffMQJnPgTXUfP/G1TwEToUC3wR15664P2LlmL0II4pvH8dQ3D3nl2JvMpoC7of1t2jIInqAcvhDiGuAloD3QW0rptwCtEGI4MAUwAZ9KKccH069BzWJB2qKAM/AB9fqzPH2FV9bOCSzCQn5RScUURwppzlSfLwhVqgEdvgkFm8nOuTE9EAhahbegX72+dVILJ1hsITYmL3mVpb+tZu1fG6mXGMMldwyhQdO4El8375tFPgu2uiZZ+ttqFJNSnFN/cMcRHh/8Ev+eeCu7N+yjYbM4ht1yAaGRoZ47hFOwh9kYcdcwUg8e54vnvmf1nA2ERYZw+YOXMOqBS3zWEQzKTrAz/C3AlcDUQBcIIUzA+3gqYh0CVgshZkgptwXZt0ENwa37d/aKULil+Y3E2eoz/chMH2euo9MqzFMr16m7inX4T8eiWNCl7hWbtwoL97f+j0fPXogSpR0MyobZYuaCa/pxwTX9yvwatzPwesnpG6gK8x2899DnqC4Vq93Ct6/+yn8m38bHj3+FrumobhXFpNB/VC96XNiZuzs9Rm5mHrqmk52Ww2fPfM/eTQd47NP/nPF7rOsEW/EqCQLrWhfRG9hdVPkKIcT/gFGA4fDLQb5agCIEIaaQoNtSdZVN2ZvJcefSLuIc4kMCy986NAea1AgzhwW8plt0F1akr/KZxTcKSSTEFMKIhOGsylhDmjMNt3QjEFgUCzc0va54Nt44pBFmxQKnpVtahIXhDS8i1ZnGmsy1SCQNbQ25vfmtJBck8/CGz8lV84i1xnBt42voV79PECNjUF66D+nE2nmbfPP2Bb7ispLimL1nkdbNt2N/5ruDH7F8uqfIeZcLOtC6Wwu+fuUnCvMKvb40nAVO5n+7mFtfupa4xvUq9X3VVqoiht8IOFV16RBg/FeWkYMFh/h472ccLjwMQNuIc7i75Z3EWn0XwcrCoYLDjN/+Jm7dhSo1pJR0je7MQ20e8PriznJl88nez0jK3Q5Aoj2Bu1veSbOwpj5tXp44ktUZa73KAlqFhTtbeHKwbSYbL3V8jsXHl7Iucz1RlkiGNhxC6/CT8VxFKNzT8i7e2/0Bmq6hoWFTrNS31WdE4nBCTCG4dTeqVAkxhTDn6Fx+OTwNV1GxlQxXJp8n/x82k9VYtK1CHnjvTh7o8zT5Wfl4hePLKFSafTyHzGNZDL3pPK/jmxcn+d0TYLWb2bsx2XD4Z0ipwTAhxDwhxBY/j1Fl7MPf9D/gx0EIcY8QYo0QYk1aWukpfrWZPDWP15LGc6DgAJrU0KTG9pwdjEsaf0Y1V6WUTN71DrlqLg7diSpVNDTWZW1g7LZxxW3qUmdc0htsy0kq7vdg4SFe3/4GOe4cn3a/PfA/H5liCV6xd5vJxrCGQ3iy3WP8u9XdXs7+BF2jO/Nqp5e5OOFC+sb25pZmN/FSxxeK72osioUQUwi61JlxZGaxsz+BS3fx86Ffyz0uBmdOo9YJ3PTsVSUu7JaE1CUWm++u6CZtEzGZfd2T6tZo0KzkdQWDwJTq8KWUw6SUnfw8ppexj0PAqUpWjYEjJfT3sZSyp5SyZ1xc3f7DLklbhqZ7b2LS0cl157Ele2u52ztYeIhsl6/DBtibv4/lRbLISTnbyXZn+YRoVF1jUdoSr2PpznS25SShnrbZSpUqs4/OKZd9Ukq2ZG9lVfoaNmRtYmXGalIdKT7XuXQXhZr/XcVpTl+tF4OKJT+ngN/em834W97hu9d/ZeUfa1H9lEcs/hIQnsfpoV+hCJq0a0SDJvV9XnvFQyMwn1YVy2w106prc1p08r3LDETK/jRW/rGWgzsOl/k1tZmqCOmsBtoIIVoAh4HrgRuroN+znhRnCi7puyFGRzsjx6bqasBsGolkUdpiBtTvx3FXOrqfmzC39FSRuiThYkzCxMGCQ/x86Jeikoe+7R11lK8S2BfJX7Hk+NLi9jZnb2Fn7i5e6fQi8faGxdfZFBth5jByVV/p51OvM6h4jh/J4P5eT5GfnY+zwIXVbkHTdL8x+2Lt+qLjUkiEIrDaLJgsJuxhdp7/8VG//TQ+J5FXZz7F23d/yPHDGUgJvS/pzhNf3F8mO1W3yhuj32PZb6uw2CyoLpWOA9ry0rQn63Rd3GDTMq8A3gXigD+EEBuklBcLIRLxpF+OkFKqQogHgD/xpGV+LqUs//S0DtIqvBVLjy/30Y0RKDQPK7+uiN1kLzEv/sSMvnlo4BnUEcdRvtj3Fd2iuzB176ce4TI/bZow0Saitc/xQwWHSMrdQbg5nB7R3bCZbOhS5/3dH7Emc63P9S7dycwjv3N3y5P7CoQQXNX4cr478INXWMeqWLm28dUBbTcInk/GfEN2Wjaa6vmsnIizC0WUXmFMgslq4oanr6Bl1+b0Gt4NsyWwC+o2uBNf7nqPrLQc7KFWQsLLnrDw3bhfWT59NS6Hu9jGDQu28syIcbw6YwxhUYGTEGozwWbpTAOm+Tl+BBhxyu+zgFnB9FUX6R3bi+mHZ5Duyiie9VqEhRZhzWkZVv6yigVqPlbF6hP7Bs8E7bz6AwFoFtaMcyLasDV7m48z16TG8vQVrM1Y57cdT1sCq8nKJfEnq1xJKfls3xeszFiFlGASJr4SX/Nk28fZnbeHjVmb/LYl8Qiync7gBoOwCCvTDk8n051JvL0h1zW5ls7R/qWdDSqGlb+vLXb2p2MNsWK2mJG6jtul+t1Fa7VZ6D60Mx36tS1Tf0IIYhqUv6LczA/n+uwa1lWdLYuTuL7xv3ll+hi6D+lc7nbPdoydtjUYq2LhxQ7P8fOhaaz69UQ0AAAc5UlEQVTJXItJmDgvbiAjE/91RprvTUooChJni2NA/ZP51w+3eZDHNjxJtuob8zcLE2qA0JBAcG5MD65pcpWX1PKqjDWsyliDqyhn/0RoafKudzwZOCVIJ5yu9OnUnOzLT6ZJaGMmdh1v6N9XIf4WWAFMJoXvD3zIno37CYsKZcmvK/n57d/9bMrSz6hGrj/ysvLZvX4fsQkxNG3XyOvc6Zu5TsWR7+SlK9/kp2OfYrXXrTq5hsOv4YRbwrmtxS3c1uKWoNuymWxc2/hqfjz0c/HsXEEQag7jhQ7Pem1esigWOkd3Ytlx312yqtQC5lm1Cm/Fg23u8zm+IG2hr6Qx4NCcpWbwOXQH+Wo+YeYwFqUt5uv932ESJnSpE22J4rG2D9PQiN1XCZfcNYRf3v7dK2XSbDHRe0QPIutFFs+aGzaLY+6XC8hJzyt2+rZQG3eNvwl7aOk7oXes2cOsT+aRm5nHwCv6cP7Vfb3CP1+/8hP/Gz/NE593qzTv2ISxM58uvhvoNqQTq/5YV2KYaf3fW+gzoscZjcPZiuHw6xgXxg8lMSSBOcfmkuXOpmtUZ4bHX0S45aQ2vaqrFGgFDI+/mNUZa70ctVVY6V2vJ0cKj5Kcv9/ry8AizDQOSWRr9jbaR7ZDEcopbQYuPt0u4hzWZq7zfJH4QSDQpM6+vGS+3v+dVygpxZnKhO1vGzP9KuLm565m5+o9bFm6HSGERyenRQMe/eReAFbPWc+MD/+kMNfB1Y9eRlZqNmvmeqQarnrkMnoMLT2MMuODOXz85Ne4HW50XbJ69gZmfvgnb85/EbPFzJJpK/nxzele8fndG5IZe81bvL3wFQDufWs0W5dsJz+nwG8xF8BvyKm2Yzj8OkjHqA50jOrgc1xKyYwjvzPr6Bw0qWFWzJxffyC78nazv+AAdpOdoQ0G0z6iHTOP/uFx6NKzruCSTnQky46vYEX6SqKtMTzT/kmiLJ4Z18C4/iQXJPvE/RWhcGPTG9ibv490Z4ZfzZ14ezyRlgh+OPij33WDLFcmu3N30yayTQWNUO1HUzVW/rGOA9sP07xjE3pd0g2TqfRceqvdyvg/n2f3hn3s23SAhJYN6DigHUIIPn/2O36Z/Aeuotj55sVJNO/YhPdXjy9xcfZU8rLymfr4V153EI58B7vX72Phj8sZetN5/DRxho92v+bW2LF6N8cPp3vCTlIydeNEpj72JUt+XYWu6z7Xdy/Dl09tw3D4BsXMOfYnvx+dVexU3ZqbhccXc1PT67kg7nyEECxJW8qU3e+dEhJScEs3JmEu3siFhDRHGp/t/T8ebftfAAbU68eK4yvZk78Xp+7ELMwoQuG+Vv8m2hrFa51e4Z/UhUw7PB237kZDw6pYMQkT/251FwDZfjZ9AahorMxYbTj8MpKZksV/+z9L1vEcXIUurCFW6iXEMmXpq0TWiyhTG627taB1t5OJA2mH0vlp4gyvfHxd09m7aT8/vjmDG585WY8h+3gO879bTNrBdDqf154+l/Yo/rLZtGgbZqvZZ5etI9/Jwp+W0b5vG7av2u3XJsWs8PpNU0hauQuT2YTZaua+ybcjFMHKP9bhLHBisphQTCYe/fReQiOClyk52xClplJVIz179pRr1vgV4DSoBO5f+xB5Wr7P8VhrLJO6vYmqqzy4/mEKtMIytWcSJj469z2simdhTJc6W7K3siVnG5HmCAbU70fMaRIRqq6yNnMdu/P20MDWgP71+xbr+Mw79jdfH/jWb18xlhgmd59YnrdbZ3nlmoksm77mZJ48njj8oOsHMObLB8+ozb+/X8L4m9/xGzOPiovk55TPAEhauYsxF76C6tZwO93Yw2w079iEif+8hC3ExoZ/tvDi5RMoyPX+jAkhGHbL+RzacYSklb5ZW+Bx+CaT4iXoZgu18vrs59B1nRW/ryUsKpShN51HQovau+YjhFgrpezp75wxwzcAPM7Yn7MHiitNpTmPo5VD0kFK6bUpSxEKXaI70yU68K20WTHTp15v+tTr7XNuQFy/gA4/x082kYEvUkqWzfB29uCRLFj88woe+uBu1s7diObW6HFhFyJiylZ3ODTSHnCBNDcjt7jvV66e6JVB48h3smvdXn6d/Ac3PH0lnc9rj8VugdMcvtlmZtD1A3jx8gkBbRBC+Kh3Ogtc/DRxBq9MH0PXC0quwFUXMBy+AeBxxnHW+qS5fHfwJtgTAAg3h/ndVRuIZmFNK0Td8wQhphDqWeuR7kr3OZdYZOOp7Mrdzayjc8hwZdAxqgPD4y8i0hJZYfacTr5agENzEGuNqdkLyAEcs6bpXBt/F4oikHji3A99cDcX3za4xOYK8wrZt+lAwPMRsZ4w0eFdR0k/munbr6rzw4TpNO/UlN6XdKdR63iy03y/wP1JMJwgLCoUKSUFbt+7z5T9dVuT61QMh1+LSHGk4tZdJIYkemXIlJXrm17H1L2f+OxevaHptQBEWCLoHNWJzdlbvLTpLcKCzWTDrbtx6k4swoJZMRerZVYkNza9PoCN13ldt/T4Mv4v+evi6w4VHmZx2lLGdnqJaGv5N/KURL6az9Q9n7I1ZxsCQbg5nDtb3FYjN4EJIeh1SQ9WzVrnJT1sMnuKlThOy1yZdM9U9m89yIi7h9H4nESf9hwFTh7s+wxH96X67c9kMXHdkx6dxezjOQEzZvKzC3j95imEhNvJy/RzpylhwY/LaN6xCXs27PP6zrLYzFw4ehCzP5nn8zKz1US3ITXv71BdGDH8WkCKI4Upu94n1ZGKIhRsio17W93tNxOnNDZnb+GXQ7+R4kghMSSBaxpfRbvIk7siC7VCPtg9laSc7ZiFCQ2dKxqNYmiDwSxPX8He/H0k2OM5r/5Ar1TPimRz9hZ+OTiNFGeqXxsDrTWYMDGk4SBublaxUk5jt40jOT/ZK63Uqlh5scNzNA5tVMIrq4fjh9N5sO8z5GcXUJjnICTcjsVmwVnowlngu1dCKAKLzcKtL17DdU9e7nVu5kdz+fjxr3D4eZ3JamLUfy7m32+NRlEUkrce4J4uj5eYGy8UT6rn6cVTAHqP6M49b97KI+c/j9vhxpHvJCTcTkLLhkxaPJbp78/hu9d+Kc7gMZlNhEaF8PHGt6ifGOvTXm2lpBi+4fDPcjSp8eiGJ8l2Z3vJIFgVK693Hkt9W+Db4GDIdGWS7c4hwR5f40oKHio4xNhtr+PQfXdbNrQ1ZELXcRXW1+HCI7y0daxvuikK58UN4I4Wt1VYXxWJy+Fiya8r2Z90mBadmpCZks2nT39bnFLpD2uIlanr3/Sa6T8/cjwrfvfVQLKH2Xj4o3sYetP5xcc0VeOquDvIzy7wub40zFYz1z0xktvG3kBhXiELfljGseQ02vZq5ZXls/hXT45+ZkoWPS/qyo3PXlViKKg2Yiza1mK2Zm/DoTl8ywdKjYVpi7mq8RWV0m+MNcYnw6amEG4OD7jWEGkpW9phWUl3pvstr6ijk+LwH+aoCVjtVobceLLoyNF9KXz61DclvkZTNZZMW8X1Y07O8qMD6Ny4HG5y0r3VTE1mE49/fh+v3zwFt0MNPNMXYLFavGQZVJfKlqU7cDlchISHcMmdQ/2+9Lwr+3DelUZ9pUAY1YDPck6f2Z9AlRrpTt/FzepElzqL05bw8tZXeW7zi/xxZDZOzTcUECzR1mjOiWjt44itipURCcMDvOrMaBra1G9NX4uw0C6ibAJhNYGEFg255omR2EJt/ksWUSRrf9pitCPfv2aNrul89sz3/PTWDK/jA6/ow/g5zzPgyt7US4xBMXm7ICE8Of4JrXzTJpNW7OSzZ74r+5uqIrLSspn50Vx+emsmyVsPlv6CasQI6ZzlHCs8xnNbXvIRH7MpNkY3v8VLEO0EBwoO8suhaSTn7yfOVp/LG42kU1Tlp6x9vOdT1mSuxVkU/rAIC4khibzQ4RnMSsXebOapeUzZ+T778vdhVsxoUmVk4mVclnhphfYD8FXytyw+vsRrM1qYOYzXO48looLvKCqao3tTmP/dYhz5Tvpd1tOz2/qDOSz8YRn6aQusVruVTza/RWKrkzWQR0beUqJQmdlq5sejnxARE05hvoOJd3zA8hlrMFtMIMBqt+AqdFOY58AWasNiMzNp0Vju7zXGb4nDsKhQfsv8suIGIEiWz1zDa9dPAuHJNjKZFC7994Xc+9boasvUMkI6tZj4kHj61uvNyozVxQ7HIizE2erTO9b3b74vP5lxSW8UX5vlzmLKrve4o/ltlVoA/EjhEVZnrMF1yheTW7o55jjG2sz19KnXq0L7CzeH82yHMaQ60shyZ9EktHGFpoieyi3NbqRpaGP+PPYXBVoBXaK7cEWjUTXe2c/9agFT/vMJuqqhqhrT35vN+Vf34+lv/kvH/m35+Imvi7JhJEII7nz9Bi9nD561gJJQXSrLZ6zmotGDeemKCaz/ewtSl8XhGl3TGXX/cFS3RmLreIbddB4hESG4A+jcOAtK7q8qKcwrZNwNk71kmFVg1ifz6D+yF10H1by8f8Ph1wLuaHEb7SLaMj/1H1y6iz6xvbkofhgWxVfK9seDP/utBfv9wf/Rp16vM0rnLAs7c3d57tdPu6F06k625mwrs8PfkbuTv1MWUKAV0Cv2XPrV6+v3fZ6ggT2OBvbKLZUphGBQgwsY1OCCSu2nIsnNzGPKvZ94OWxHvpNFPy9nyI0DGXX/JfT9V0+WTluFlJL+l/fyuzu18/kd2PjPlkCp/QBs+Gcria0TWDdvs885Z4GLbSt2MmnhWK/jHfq1ZevS7V7HhBA1KsVy7V+bfEJSAM4CJ/O+WVj7HL4Q4hrgJaA90FtK6Tf+IoRIBnIBDVAD3W4YnBmKUBgYN4CBcQNKvXZffrLf4/lqAQVaAeHmykmljLJEofhZMjILM7GWsi3+/nFkNr8dmVH8hbU9dwcLUhfxTPsxKEIh05VJqDm00mbytYm1czditphwnRaNceQ7+ed/Szn3wq40bBbHlQ+XHAJ78L27eKj/MxTmOvymUoLnLuCbV38O2EbaAd+1pv9+eDcPD3wOt9ON26litVuwhli5f0rF7+04UwLtKZASdK1mhsqDneFvAa4Eppbh2sFSSqPCdDUTbYmm0I8WjiIU7ErwtT6llKxIX8mcY39RoOXTLboblyVeSueoTlhNVp9USUUonBc3sNR2c925HmG1U0JCLt3FocLDfH/gB1ZlrMGhF6JLSbfortzV8nbD8ZdAcYHx0xBClFnZEqBpu0Z8kTSFb8f9wvR3fYvWW0Os9Bjahe/G/RqwjVbdmvsca9GpKZ8nTWHmh3+yZ0MybXu14tJ/X3RG1a8qix4XdvGRqABPSuqQG0v/TFcHQd2/SymTpJQ7KsoYg8pnZOK/isXMTmAVVoY0GFQhC6c/HPyJz5O/JLkgmVRnGn+n/s0LW17CqTt5ut2TJNjjsSpWbIqNSHMkD7d50KsyViB25u3C7Cf90ak7mZ/6DzlqDi7djSpVNmRt5P3dHwX9XmozPS/u6iMZDB4HPeyW8/28IjAxDaN5YMqdDLv1AmyhJz9bZquJ+okxDLnpPBqd4yt9cYKN/2zl5asncnDHYa/j9RJiuO2V6xk74ylufv6aGuXsAcIiQ3nii/uxhlix2CwoisAWamPwDQPpMaxLdZvnl6qK4UtgrhBCAlOllB8HulAIcQ9wD0DTpoGLaRucGf3r9yXHncO0w9ORSHSpc17cQK5tEnzx7xx3DvNS/vaahatSI0/N55/UBfwr8VJe7/wqKY4UXNJN45BGZV4zCDWFBqyMdXpaqipVtufsIN2ZUaYvk7pISHgIz/3wKGOvfRshKA7HXPXIpXQa0O6M2nzi8/vo1L8t0z+YgyPfyflX9+W6Jy/HHmrj5ueuZuvS7X4XXfNzClg6bRXr5m3io/VvnlVKlhdc258O/duy4IdlOPId9B7Rg7Y9W1W3WQEpNS1TCDEPiPdz6lkp5fSiaxYAj5cQw0+UUh4RQjQA/gIelFIuKs04Iy2z8lB1lUx3FpHmiArbKbspazMf7JnqN2TULqItT7d/8ozb1qXOwxseL1buLI0QUwiPt32E1uE195+vJpCbmcfSaatw5DvpPaK7TxZORbJs+mref+hz0o9m+g2FmMwKw+8YysMf3VNpNtQFgkrLlFIOC9YAKeWRop+pQohpQG+gVIdvUHmYFTNxFSy7EG2N9rvDVUEhzhZcpowiFJ5s+yhv7piEQ3Mg8Nw9tApvya7c3Z7CK6eg6qpfBU0DbyJiwhl+x5Aq6av/qF70G9mTjQu28uIVEyjI8Z4YaKruk5ljULFUekhHCBEGKFLK3KLnFwGvVHa/BlVP09AmJNjjOVRw2MsBmxUzF8UHPW+gcWhjJnV7k915eyjUCmkT3hqH7uDZzS9SqBUWh3asipXh8RcRag4Nuk+DikUIQdP2jXx06z3noFGbyrvDMAhy0VYIcYUQ4hDQD/hDCPFn0fFEIcSsossaAkuEEBuBVcAfUkrf5XyDWsHjbR+hTURrzMKMTbERbg7n3lZ30zS0SYW0rwiFcyLa0DW6C6HmUGKtsbzS6UX61etDtCWKJiGNua35rVzZ6PLSGzOoVBb+uIw7OjzMyMhb+O+AZ9myJAmA2PgY+ozogdXuvX/Cardy3ZjK0X4y8GBIKxhUClmuLAq0QuLtDSttM5dBzeWPT/7iw0e+9JJbtoVYGT/3eToNaIejwMk7933Cgh+WARBZL5yHPrib/iMrdsd1XcSQRzYwMKgyNE3j2vi7yEnP8znXaWA7Ji06uavWUeCkMLeQ6AZRNbtK2FmEoaVjYGBQZeRl5lOY518Fdd8W71KI9lAb9tCaVU+hNmPcaxsYGFQoYVGhmCz+d/LGN6tcXSODkjEcvoGBQYVitpi56pFLPdr6p2ALtXLry9cFeJVBVWA4fAMDgwrn1hev5donRhISYcdkVgiLCiWhVTy/vTubv75eiKb5r0h2prgcLrLSsv3KRRicxFi0NahQctw5FKgFNLA3MLJzDNA0jfG3vMuKmWuKi4vbw2x0HdyJsdPHBL1Q63K6+eDhz/nry4VIKYmICef+d+7g/Kt9C//UFYxFW4NKJ0/N48PdU9meuxOTMGFRzIxudgu9K7iwicHZxb7NB1g+Y7WXho4j38nGf7awccFWug0OTt9+0r+nsuin5cXVsTKOZTHhtveIbhBFl/M7BNV2bcSYghlUCJN3vktS7g5UqeLUneSp+Xyy73P25u2rbtMMqpENf29BU33DLI58J+vmbwqq7dzMPBb9uAxXobcgm7PAxbev/RJU27UVw+EbBM0xRwr7Cw746Oi4dTdzjs2tJqsMagIRseGYrb4ZO1a7hah6kUG1nX4kM6B2/9E9KUG1XVsxHL5B0GS6MjH50aqXSI47jZo3dZmBV/bxG6cXisLgG0qv0FYS8S0a+F2kVUwK7fu2Cart2orh8A2CpmloE1TdVwzLLMx0jKq+OGqKI4Wpez7hsQ1jeD1pAluyt1abLXWVsMhQxs16lqj6EYRGhBAaGUJ4dBgv/foEsfFlK20ZCHuojRuevsIr/VMIj4TDzc8HX9+hNmJk6RhUCL8cmsafx+biLKo3a8JEmDmM1zq/QqQlosrtOVZ4jBe3jsWlu9DxzAKtipXRzW4uU+1fg4pFUzW2r9qNrum079umXGUUS0JKybxvFvG/8dPITMmmQ/+23DnuRlp0Clw8SdM0Vs1az6rZ64luEMlFowedVUVXSsPQ0jGodKSUrMpYzexjf5Kn5tElqjMjE/9FtDW6Wux5f/dHrM5Y41MNK8wUxrs9JvkNQRnUflS3ylMXv8qONXtw5DkwW02YTCae+uYhBl7Rp7rNqxCMtEyDSkcIQZ96velTr3d1mwLAztxdPs4ewC3dZLgyK7z4i8HZwbxvFrNj9e7iPQGqS0NFY8Jt79F7RA+sNkspLZzdGDF8g1pJtMV/wWspdcLNYVVsjUFNYf63i4qd/akIIUhavrMaLKpagi2A8qYQYrsQYpMQYpoQwu/9uxBiuBBihxBitxDiqWD6NDAoC5clXopVsXodswgLvWJ7EmIKqSarDKobW4jV73EpJRZb7Q94BDvD/wvoJKXsAuwEnj79AiGECXgfuAToANwghDC2wBlUKj1jz+WaxldiU2zYFRtmYebcmO7c3mJ0dZtmUI2MuHsY9jBfOWZ7mJ22vVtXg0VVS1BfaVLKU3fVrAD85UL1BnZLKfcCCCH+B4wCtgXTt4FBaVwUfyGDGgziuDONSEsk4ebw6jbJoJrpd1lPLr59MLM/nY9QFBSTgsmk8OrMpzCZav9CfkXew9wB/ODneCPg4Cm/HwJqx3K4QY3HqlhIDEmsbjMMaghCCB54506ueGgEG//ZSkRsOH0u7YHV7j/UU9so1eELIeYB/krJPyulnF50zbOACnzrrwk/xwLmggoh7gHuAWjaNHAurYGBgcGZ0qh1Ao1aJ1S3GVVOqQ5fSjmspPNCiNHAv4Ch0n9S/yGgySm/NwaOlNDfx8DH4MnDL80+AwMDA4OyEWyWznBgDDBSSlkQ4LLVQBshRAshhBW4HpgRTL8GBgYGBuUn2Cyd94AI4C8hxAYhxEcAQohEIcQsACmlCjwA/AkkAT9KKQ1REwMDA4MqJtgsHb95TFLKI8CIU36fBcwKpi8DAwMDg+AwdtoaGBgY1BFqtHiaECIN2F/ddpRCfeBsEX03bK08ziZ7DVsrj5pgbzMpZZy/EzXa4Z8NCCHWBFKmq2kYtlYeZ5O9hq2VR0231wjpGBgYGNQRDIdvYGBgUEcwHH7wfFzdBpQDw9bK42yy17C18qjR9hoxfAMDA4M6gjHDNzAwMKgjGA7fwMDAoI5gOPxyIoS4RgixVQihCyECpl8JIZKFEJuLJCeqpRJ7OWyt9opkQohYIcRfQohdRT9jAlxXbeNa2jgJD+8Und8khOhRlfb5sac0ewcJIbKLxnKDEOKFarLzcyFEqhBiS4DzNW1cS7O3RoyrX6SUxqMcD6A90BZYAPQs4bpkoH5NtxUwAXuAloAV2Ah0qAZbJwBPFT1/CnijJo1rWcYJj5zIbDyS4H2BldX4ty+LvYOA36vLxlPsOB/oAWwJcL7GjGsZ7a0R4+rvYczwy4mUMklKuaO67SgLZbS1uCKZlNIFnKhIVtWMAr4sev4lcHk12FASZRmnUcBX0sMKIFoIUV2i6zXl71oqUspFQEYJl9SkcS2LvTUWw+FXHhKYK4RYW1TUpabiryJZo2qwo6GU8ihA0c8GAa6rrnEtyzjVlLEsjy39hBAbhRCzhRAdq8a0clOTxrWs1Mhxrf1l2s+AslT5KgMDpJRHhBAN8MhHby+aGVQoFWBruSqSBUNJtpajmSoZVz+UZZyqbCzLQFlsWYdHdyVPCDEC+A1oU+mWlZ+aNK5locaOq+Hw/SBLqfJVxjaOFP1MFUJMw3OLXeGOqQJsLVdFsmAoyVYhRIoQIkFKebTodj01QBtVMq5+KMs4VdlYloFSbZFS5pzyfJYQ4gMhRH0pZXWLf51OTRrXUqnJ42qEdCoBIUSYECLixHPgIsDvin4NoKZUJJsBjC56PhrwuTup5nEtyzjNAG4tyirpC2SfCFNVA6XaK4SIF0KIoue98fiD9Cq3tHRq0riWSo0e1+peNT7bHsAVeGYcTiAF+LPoeCIwq+h5SzxZERuBrXjCKzXS1qLfRwA78WR1VJet9YD5wK6in7E1bVz9jRNwL3Bv0XMBvF90fjMlZHHVEHsfKBrHjcAKoH812fk9cBRwF31e76zh41qavTViXP09DGkFAwMDgzqCEdIxMDAwqCMYDt/AwMCgjmA4fAMDA4M6guHwDQwMDOoIhsM3MDAwqCMYDt/AwMCgjmA4fAMDA4M6wv8DAv7NI3TMb74AAAAASUVORK5CYII=\n"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.cluster import AgglomerativeClustering\n",
    "agg = AgglomerativeClustering(n_clusters=5)\n",
    "c=agg.fit_predict(X)\n",
    "plt.scatter(X[:,0],X[:,1],c=c)\n",
    "plt.show()"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-08-30T12:35:02.758056500Z",
     "start_time": "2023-08-30T12:35:01.656417400Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "outputs": [],
   "source": [],
   "metadata": {
    "collapsed": false
   }
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
